【问题标题】:fetch specific value from an array从数组中获取特定值
【发布时间】:2015-06-13 09:58:36
【问题描述】:

我有一个来自这段代码的数组

echo "<pre>";
print_r($_SESSION["followers"]);
echo "</pre>";

数组是

Array
(
    [pagination] => Array
        (
        )

    [meta] => Array
        (
            [code] => 200
        )

    [data] => Array
        (
            [0] => Array
                (
                    [username] => SD
                    [profile_picture] => https://instagramimages-a.akamaihd.net/profiles/profile_4.jpg
                    [id] => 42114932
                    [full_name] => A
                )

            [1] => Array
                (
                    [username] => ER
                    [profile_picture] => https://igcdn-photos-c-a.akamaihd.net/hphotos-ak-xpf1/t51.2885-19/1.jpg
                    [id] => 395834289
                    [full_name] => P
                )

        )

)

我想知道是否可以从数组中匹配特定值,然后获取与之相关的其他值,

例如 我得到了 id = 42114932 的值,现在我希望在给定的数组中匹配这个值,无论它匹配到什么地方,我都希望获取该 id 的用户名、全名和个人资料图片, 在这种情况下,对应于 id 42114932 我希望得到 ​​p>

username=SD, 
full_nmae=A
profile_pic = https://instagramimages-a.akamaihd.net/profiles/profile_4.jpg

如果可以的话,谁能告诉我怎么做

【问题讨论】:

  • 你能解决吗?你应该说出哪个答案对你有帮助!

标签: php arrays multidimensional-array phpmyadmin


【解决方案1】:

一个选项是通过数组循环

$f = ..;  //(the id to find)
for($i = 0, $i < count($data); i++)
{
    if($data[$i]['id'] == $f){
        echo 'Full name : '.$data[$i]['fullname'];
        echo '<br />Username : '.$data[$i]['username'];
        echo '<br />Profile picture : '.$data[$i]['profile_pic'];
    }
}

我认为这可行吗?可能需要调整 for 循环的计数器。

【讨论】:

  • 我遇到了语法错误,所以我将 for 循环更改为 for($i = 0; $i
  • 好像我忘记了循环中最后一个 i 的 $ 尝试。
【解决方案2】:

此代码可能会对您有所帮助:

  $arr = $_SESSION["followers"]['data'];
    $id = 42114932;
    $count = count($arr);
    $foundArr = array();
    for ($i = 0; $i< $count; $i++) {
       if ($arr['id'] == $id) {
         $foundArr[$i] = $arr[$i];
         break;
       }
    }
    print_r($foundArr)

【讨论】:

  • 作为回复,我只得到这个结果:Array ()
【解决方案3】:

下面的代码是不言自明的:

<?php
$_SESSION["followers"];

echo "<pre>";
print_r($_SESSION["followers"]);
echo "</pre>";



$yourID = 42114932;
for($x=0;$x<(count($_SESSION["followers"]['data']));$x++){
    if($yourID  == $_SESSION["followers"]['data'][$x]['id']){ //compare your id to each record
        echo "Full name : ".$array['data'][$x]['full_name'];
        echo "<br>Username : ".$array['data'][$x]['username'];
        echo "<br>Profile picture : ".$array['data'][$x]['profile_picture'];
        echo "<br>";
    }
}

【讨论】:

  • 我无法获取数据,虽然没有错误但也没有结果
【解决方案4】:
function getMetaInfo(array $array, $id, $arrayBranch = NULL){ 
    if($arrayBranch === NULL){
        return FALSE;
    }

    $returnArray = array();

    foreach($array[$arrayBranch] as $key => $value){
         if($value['id'] == $id){
              unset($value['id']);
              $returnArray[$id] = $value;
              return $returnArray;
         }
    }

}

【讨论】:

  • 没有得到任何结果
【解决方案5】:

你可以试试这样的:

 $row = fetchData($_SESSION["followers"]['data'], 'id', 42114932); // Here you will get the comlet row of data you are searching

function fetchData($data, $column, $value){
    for($i = 0, $i < count($data), i++)
    {
        if($data[$i][$column] == $value){
            return $data[$i]; // returns a complete row.
        }
    }
}

【讨论】:

  • 我收到一个错误解析错误:语法错误,意外的 T_INC,期待 ';'
  • 有一个';'而不是 for 子句中的“,”!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多