【问题标题】:Associative Array get key value in PHP关联数组在PHP中获取键值
【发布时间】:2015-08-05 21:24:10
【问题描述】:
array(24) { ["user_id"]=> string(1) "9" ["facebook_id"]=> string(15) "381305418721463" ["first_name"]=> string(4) "John" ["last_name"]=> string(4) "Does" ["current_latitude"]=> string(10) "-37.825697" ["current_longitude"]=> string(10) "144.999965" ["current_address"]=> string(45) "229 Swan Street, Richmond VIC 3121, Australia" ["date_of_birth"]=> string(10) "01/01/1990" ["city"]=> string(30) "Melbourne, Victoria, Australia" ["country"]=> string(0) "" ["email_address"]=> string(22) "bzingatester@gmail.com" ["profile_pic"]=> string(0) "" ["first_login"]=> string(2) "no" ["blocked_users_id"]=> string(0) "" ["my_friend"]=> string(52) "10152805813948795,10155307822515151,1389504958030240" ["search_radius"]=> string(2) "50" ["device_type"]=> string(3) "ios" ["device_id"]=> string(1) "1" ["device_token"]=> string(64) "6ddaf9d59418e99b1c9cb28c21d94647bfed9f78a80b410164c1f2798beee84a" ["hideFromActivityFeed"]=> string(2) "no" ["hideFromFriendsofFriends"]=> string(2) "no" ["hideNotification"]=> string(2) "no" ["created_date"]=> string(19) "2015-01-07 01:00:11" ["modified_date"]=> string(19) "2015-02-27 05:36:12" }

在 PHP 中,我有一个名为 $userData 的数组,如上所述,我希望能够使用类似这样的代码回显诸如名字“first_name”之类的值

echo $userInfo->first_name; 

(这似乎不起作用)

想使用 foreach 循环并获取数组中的所有键,只需获取值 'first_name'、'last_name' 等。从数组中

【问题讨论】:

    标签: php associative-array


    【解决方案1】:

    请这样尝试,

    $first_name =  $userInfo['first_name'] // $userInfo is array name
    

    【讨论】:

    • 感谢您的快速回复:) 但是似乎不起作用。页面抛出错误...顺便说一句,它在 Laravel 上运行,php 端代码是 code $user = DB::table('users')->where('user_id', '=', $i)->第一的(); $userInfo = (数组) $user; $first_name = $userInfo['first_name'] // $userInfo 是数组名 var_dump($userInfo);code
    • Laravel 错误“糟糕,出现错误。”如果我取出你发给我的代码,页面仍然会加载。
    • 感谢您的帮助。仅供参考此语句运行正确我可以获得所有值,但不能单独获得这是我想要的foreach($userInfo as $x => $x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; }
    【解决方案2】:

    实际上我们在编程中使用arrays来防止循环或类似的东西来寻找一个值,所以而不是这个结构,

    $a = 'text1';
    $b = 0;
    $c = true;
    $d = 'text2';
    

    我们使用数组:

    $array = array('a' = > 'text1', 'b' => 0, 'c' => true, 'd' => 'text2' );
    

    为了访问某个键的值,我们在数组名称后的括号内调用键名:

    echo $array['a'];
    //will echo text1
    //or
    echo $array['b'];
    //will echo true
    

    这是associative array...

    如果您只是将值传递给没有键的数组,则 php 将使用数字键...

    $array = array( 'text1', '0', true, 'text2' );
    
    $array[0] = 'text1';
    $array[1] = 0;
    $array[2] = true;
    $array[3] = 'text2';
    

    【讨论】:

      【解决方案3】:

      您可以将数组更改为对象,然后使用 -> 如下所示

        $userData= (object) $userData;
      

      然后 $userData->firstName ..etc

      【讨论】:

      • 谢谢,我有一个新错误Cannot use object of type stdClass as array 突出显示了上面的行。
      • 我觉得你的代码搞砸了,你能给我看看吗?你不能使用 (object) $userData 然后 $userData['firstName'] 因为它不再是一个数组你确定你做了 $userData = (object) $userData;在使用 $userData->firstName 之前?
      • 如果你能告诉我整个区号而不仅仅是数组内容,这样我就可以找出错误
      • code

        用户

        "; for($i = 0; $i where('user_id', '=', $i)->first(); $userData= (对象) $userData; $first_name = $userData['first_name'];回声 $first_name; var_dump($first_name);回声“”; } echo "" ?>
        code
      • 将 $userData['first_name'] 更改为 $userData->first_name 正如您在想要使用之前所说的那样 -> 在数组中,这意味着您必须将其转换为 object 和 $userData = (object ) $用户数据;为您执行此操作,但如果您需要数组,您仍然使用数组,您需要删除 $userData=(object) $userData;行
      【解决方案4】:

      请使用类型转换。

      $userinfo = (array)$userInfo;
      

      然后您访问您的密钥 first_name。

      echo $userinfo['first_name'];
      

      【讨论】:

        【解决方案5】:

        首先使用不同的方法来转储数据..

        echo "<pre>";
        print_r($your_array);
        exit;
        

        它只是预示着更好的演示来了解什么是对象,什么是数组。

        不能使用对象表示法访问数组成员。但是,您可以将数组转换为对象。

        (object)$yourarray;
        

        如果要访问数组成员,请使用:

        $yourarray['first_name'];
        

        如果你作为一个对象投射:

        $obj = (object)$yourarray;

        现在访问:

        $obj->firstname;
        

        希望对您有所帮助。

        【讨论】:

        • 谢谢。我终于明白了。问题是一些返回的对象是空的。返回“stdClass 对象()”。我的问题是如何先找到一个对象是否为空?如果我从一个空对象中提取它会引发错误。
        • 尝试使用“isset”来查看对象是否存在。之后,您可以使用“property_exists”..php.net/manual/en/function.property-exists.php 来探测该特定属性..
        猜你喜欢
        • 2021-03-16
        • 2016-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-25
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多