从 var_dump 中提取值并将它们保存在数据库中

乔伊·卡利安

我有一个变量 $tinder->recommendations。当我将它保存在 var_dump 中时。

像 var_dump($tinder->recommendations);

它给出了一个位于下面的数组。

object(stdClass)#7 (2) {
  ["status"]=> int(200)
  ["results"]=> array(47) {
    [0]=> object(stdClass)#34 (23) {

      ["group_matched"]=> bool(false)
      ["distance_mi"]=> int(14)
      ["content_hash"]=> string(47) "5nVT6PhabtGrSRqiRiLAfqXH1LFkps25sagHawimxt5Eh4r"
      ["common_friends"]=> array(0) { } 

      ["common_likes"]=> array(0) { } 
      ["common_friend_count"]=> int(0) 
      ["common_like_count"]=> int(0) 
      ["connection_count"]=> int(0) 
      ["_id"]=> string(24) "583c9fd7298a09eb42f32df1" 
      ["bio"]=> string(353) "Family, friends, my pooches, music. Old fashioned as far as relationships go. I'm not an apple polisher. Not sure if this is the place to find a keeper, but who knows. I'd say this is better than meeting someone at a bar haha. Music: Blues, Soul, Doo Wop, Folk, Bluegrass, Country, Doom, Punk Red Heeler & Old English Bulldog 6'-0" for those who care" 
      ["birth_date"]=> string(24) "1989-11-23T20:12:56.493Z" 
      ["name"]=> string(5) "Trent" 
      ["ping_time"]=> string(24) "2014-12-09T00:00:00.000Z" 
      ["photos"]=> array(6) { 
        [0]=> object(stdClass)#33 (3) { 
          ["id"]=> string(36) "318ad35d-3e14-44c6-8348-3aacfc4594bd" 
          ["url"]=> string(92) "http://images.gotinder.com/583c9fd7298a09eb42f32df1/318ad35d-3e14-44c6-8348-3aacfc4594bd.jpg" ["processedFiles"]=> array(4) { 
            [0]=> object(stdClass)#35 (3) { 
              ["url"]=> string(100) "http://images.gotinder.com/583c9fd7298a09eb42f32df1/640x640_318ad35d-3e14-44c6-8348-3aacfc4594bd.jpg" 
              ["height"]=> int(640) 
              ["width"]=> int(640) }

            [1]=> object(stdClass)#36 (3) { 
              ["url"]=> string(100) "http://images.gotinder.com/583c9fd7298a09eb42f32df1/320x320_318ad35d-3e14-44c6-8348-3aacfc4594bd.jpg" 
              ["height"]=> int(320) 
              ["width"]=> int(320) }

            [2]=> object(stdClass)#37 (3) { 
              ["url"]=> string(100) "http://images.gotinder.com/583c9fd7298a09eb42f32df1/172x172_318ad35d-3e14-44c6-8348-3aacfc4594bd.jpg" 
              ["height"]=> int(172) 
              ["width"]=> int(172) }

现在我只想从“_id”和“名称”中获取值并将它们保存在数据库中。我试过下面的代码,但它没有给出任何结果,所以你能帮我,我怎样才能提取 _id & name 的值并将它们保存在数据库中?

   if ($tinder->recommendations() > 0) {
      foreach($tinder->recommendations() as $contact) {

          if( property_exists( $contact, '_id') &&
            property_exists( $contact, 'name')){

              echo "$contact->_id";

          } else {

              echo "property doesn't exists";

          }

      }
    } else {

      echo "object doesn't exists";

    }

结果:属性不存在。

if ($tinder->recommendations > 0) {
  foreach($tinder->recommendations as $contact) {

      if( property_exists( $contact, '_id') &&
        property_exists( $contact, 'name')){

          echo "$contact->_id";

      } else {

          echo "property doesn't exists";

      }

  }
} else {

  echo "object doesn't exists";

}

结果:对象不存在。

if ($tinder->recommendations->results > 0) {
  foreach($tinder->recommendations->results as $contact) {

      if( property_exists( $contact, '_id') &&
        property_exists( $contact, 'name')){

          echo "$contact->_id";

      } else {

          echo "property doesn't exists";

      }

  }
} else {

  echo "object doesn't exists";

}

结果:对象不存在。

我知道以前有人问过这个问题,但我没有弄清楚答案,这就是我在这里问的原因。任何帮助将不胜感激,谢谢。

伦纳德·勒帕达图

PHP 中的数组迭代是简单的循环,但是当你表达它们时可能会有点混乱:

$myArray = [
   "foo" => "Foo",
   "bar" => "Bar"
];

所以你可以迭代一个“元组”:

foreach($myArray as $key => $value) {
   print($key);
   print($value);
   print($myArray[$key]);
}

或简单的超值:

foreach($myArray as $value) {
   print($value);
}

您的情况是 PHP 中的经典对象迭代。自 PHP v5 PHP 支持对象迭代作为简单数组。

foreach($yourTinderObject->result()[0] as $contact) {
  print($contact->name);
}

正如您已经观察到的,我使用$yourTinderObject->result(), 它是一个带有数组的函数。使用[0]键,我只需寻址数组的“0”键,即一个对象。然后,您可以使用循环值返回对象属性:$contact->_id$contact->name.

当您的对象具有带有数字键的属性时,可能会出现特殊情况,例如:

["arr"]=> array(1) {
      [0]=> object(stdClass)#1 (3) {
         ["abc"]=> bool(false)
         ["123"]=> int(14)
         ["123abc"]=> int(5)
      }
 }

在这种情况下,当您迭代对象时

 foareach($r[0] as $myObject){
     print($myObject->abc); // this will work
     print($myObject->{"123"}); //this will not work
     print($myObject->{"123abc"}) //this will work
 }

一个非常有趣的发现如下:

 $arr = ['abc'=>'ABC', '123'=>'123', '123abc'=>'123abc'];
 $oA = (object)$arr; //casting the array to object working in dynamic languages like PHP
 $oB = new stdClass; //create plan object
 $oB->{"123"} = "123" //setting "123" property is OK

 print($oA->{"123"}); //will not working
 print($oB->{"123"}); //will work !?!! 

所以通常的“hack”是在调用之前:

$myObject = json_decode($myObject, true);

然后 $myObject 将多态转换为可以像往常一样迭代的数组。

希望有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

&前缀在数组var_dump的末尾

PDOStatement对象的var_dump不显示返回的数据

Java中是否有var_dump(PHP)的等效项?

在functions.php中的WordPress var_dump

在 xdebug.mode=debug 中启用重载 var_dump

PHP中的方法是否等效于var_dump?

无法验证laravel carbon中的true或false var_dump

如何从此var_dump()中回显结果?

xdebug 中的 PHP var_dump() 忽略 __debugInfo() 神奇方法

PHP如何在写入数据库的函数中var_dump一个对象?

Laravel文件上传为null(但是在var_dump()中存在)

将var_dump保存到文本文件中

将var_dump输出数组对象保存到变量中

使用trait时返回空值,但类中的var_dump返回正确的数据

symfony2 doctrine2中的var_dump数据过多

如何获取数组var_dump中的数据查询蛋糕php?

Foreach循环仅保存最后的数组值,但是var_dump显示不同的结果

使用Google图表为此JSON绘制柱形图var_dump(); 数据

如何将int从var_dump / json_decode存储到php中的变量中?

如何从Wordpress插件中的JSON var_dump中解析出变量

如何在Smarty中像在PHP中一样调试变量var_dump()

JavaScript中与var_dump或print_r等效的JavaScript是什么?

$ _POST和$ _GET在var_dump上不起作用,但在日志请求中起作用

file_get_contents(“ php:// input”)在var_dump中显示为空

在shell脚本中是否有一个等效于var_dump(PHP)的函数

var_dump并像php一样死掉,在Rails中的ruby中(在ruby on rails中调试)

为什么在“ $ http” AngularJS中执行“ console.log()”时,我没有从var_dump获得结果

PDO var_dump错误

如何从生产PHP代码中获取适当的调试上下文?print_r vs var_export vs var_dump极端案例