我在PHP中有一个数组,这是一个片段:
Array
(
[0] => Array
(
[id] => 202
[name] => GXP Club - Fable
)
[1] => Array
(
[id] => 204
[name] => GXP Club - Gray
)
)
我所知道的(来自GET)是ID(202)。我想展示的是
“显示结果”
( where $locations[?][id] = $_GET['id'] { echo $locations[?][name] } )
- 如果你原谅我使用伪代码。
不确定哪种功能最好,或者我是否需要遍历整个阵列才能找到它。感谢。
编辑:进一步澄清。我需要在[id]
的基础上学习[name]答案 0 :(得分:1)
foreach( $locations as $arr ) {
if($arr['id'] == $_GET['id']) {
echo $arr['name'];
break;
}
}
这应该可以解决问题。
答案 1 :(得分:0)
虽然循环遍历数组是所述问题的解决方案,但将数组更改为$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']
)访问数据,这似乎是您通常想要做的事情。
答案 2 :(得分:0)
您可以使用array_map
函数将自定义操作应用于给定数组中的每个元素。
array_map(
function($arr) { if ($arr['id'] == $_GET['id']) echo $arr['name']; },
$locations
);
答案 3 :(得分:0)
使用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"];
或者,使用其他方法:
<?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"];
*值得注意的是,array_column()
直到被问到这个问题10个月后才发布的PHP 5.5才可用!