Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php数组中查找同级键的值_Php_Arrays_Siblings - Fatal编程技术网

在php数组中查找同级键的值

在php数组中查找同级键的值,php,arrays,siblings,Php,Arrays,Siblings,我有一个PHP数组,下面是一个片段: $locations = array( array( "id" => 202, "name" => "GXP Club - Fable" ), array ( "id" => 204, "name" => "GXP Club - Gray" ) ); 我(从GET)知道的是ID(202)。我想展示的是 “显示的结果” (其中$locat

我有一个PHP数组,下面是一个片段:

$locations = array(
    array(
        "id" => 202,
        "name" => "GXP Club - Fable"
    ),

    array (
        "id" => 204,
        "name" => "GXP Club - Gray"
    )
);
我(从GET)知道的是ID(202)。我想展示的是 “显示的结果”
(其中$locations[?][id]=$\u GET['id']{echo$locations[?][name]})
-请原谅我使用伪代码

不确定什么函数是最好的,或者我是否需要在整个数组中循环才能找到它。谢谢

编辑:进一步澄清。我需要根据[id]学习[name]

foreach( $locations as $arr ) {
    if($arr['id'] == $_GET['id']) {
        echo $arr['name'];
        break;
    }
}

这应该可以解决问题。

在数组上循环是上述问题的解决方案,将数组更改为
$id=>$name
键值对似乎更为理想,如果这是数组中的所有数据,则不使用命名键值,例如:

$locations = array( '202' => 'GXP Club - Fable',
                    '204' => 'GXP Club - Gray',
             )
或者,如果有更多数据,我会切换到嵌套数据结构,例如:

$locations = array( '202' => array( 'name' => 'GXP Club - Fable', 'prop2' =>$prop2, etc),      
                    '204' => array( 'name' => 'GXP Club - Gray', 'prop2' =>$prop2, etc),
             )

这使得您可以通过ID(例如,
$locations[$ID]['name']
)访问数据,这似乎是您通常想要做的。

您可以使用
数组映射
函数,将自定义操作应用于给定数组中的每个元素

array_map(
    function($arr) { if ($arr['id'] == $_GET['id']) echo $arr['name']; }, 
    $locations
);

使用PHP的内置数组函数*执行此操作可避免
foreach
循环:

<?php
$locations = [["id"=>202, "name"=>"GXP Club - Fable"], ["id"=>204, "name"=>"GXP Club - Gray"]];

$col = array_search(array_column($locations, "id"), $_GET["id"]);
echo $locations[$col]["name"];

您需要一个循环,您可以从第一次匹配开始
中断该循环<代码>foreach($subarr数组){if($subarr['id']==$\u GET['id']){echo$subarr['name'];break;}
谢谢这是我正在实现的。可惜这只是一个评论,而不是一个答案!对@Michael请不要将答案作为评论发布。7年后,我仍然觉得很烦人,以至于要发表评论。我支持你现在就改变这一点。我很欣赏你对数组应该如何正确构造的见解,但这是一个JSON对象,所以有点愚蠢。
<?php
$locations = [["id"=>202, "name"=>"GXP Club - Fable"], ["id"=>204, "name"=>"GXP Club - Gray"]];

$result = array_filter($locations, function($v){ return $v["id"] == $_GET["id"]; });
echo array_shift($result)["name"];