简单的PHP数组搜索


Simple PHP array search

我有一个数组,如下所示:

Array
(
    [0] => Array
        (
            [name] => stories
            [results] => Array
                (
                    [0] => Array
                        (
                            [id] => 1
                        )
                    [1] => Array
                        (
                            [id] => 2
                        )
                )
        )
    [1] => Array
        (
            [name] => users
            [results] => Array
                (
                    [0] => Array
                        (
                            [id] => 1
                        )
                    [1] => Array
                        (
                            [id] => 2
                        )
                )
        )
)

这个数组存储在一个名为$fql的变量中。我想访问名称为stories的结果。我可以做:

$stories = $fql['0']['results']

然而,通过索引号而不是数组名称来选择数组似乎有点奇怪。

有没有其他方法可以访问[name] => stories旁边数组中的结果?

试试这个:

foreach($fql as $arr) {
    $$arr['name'] = $arr['results'];
}

这将把结果放入两个变量中,$stories$users

如果您不确定具有[name] => stories的数组将始终位于索引0上,则可以使用循环来查找它:

foreach($fql as $arr) {
   if($arr['name'] == 'stories') {
      // do stuff and break;
      break;
   }
}

如果你不确定故事总是第一个元素,你可以写一个函数来迭代数组:

function getValuesFor($term, $list) {
    foreach ($list as $item) {
        if ($item['name'] === $term) {
            return $item['results'];
        }
    }
    return array();
}
$results = getValuesFor('stories', $array);