我有一个这样的多维数组,我是从JSON转换而来的:
Array (
[1] => Array (
[name] => Test
[id] => [1]
)
[2] => Array (
[name] => Hello
[id] => [2]
)
)
如果id
等于用户提供的值,我该如何返回name
的值? (例如,如果用户键入“Test”,我希望它返回“1”)
编辑:如果有人想要的话,这是有效的代码:
$array = json_decode(file_get_contents("json.json"), true);
foreach($array as $item) {
if($item["name"] == "Test")
echo $item["id"];
}
答案 0 :(得分:1)
经典解决方案是使用foreach
简单地遍历数组并检查每行的name
。当它与您的搜索字词匹配时,您找到了所需的id
,因此break
停止搜索并使用该值执行某些操作。
如果您使用的是PHP 5.5,那么使用array_column
的方便解决方案就可以使用{{3}}:
$indexed = array_column($data, 'id', 'name');
echo $indexed['Test']; // 1
答案 1 :(得分:1)
您可以使用此功能
function searchObject($value,$index,$array) {
foreach ($array as $key => $val) {
if ($val[$index] === $value)
return $val;
}
return null;
}
$MyObject= searchObject("Hello","name",$MyArray);
$id = $MyObject["id"];
答案 2 :(得分:0)
这是解决方案
$count = count($array);
$name = $_POST['name']; //the name which user provided
for($i=1;$i<=$count;$i++)
{
if($array[$i]['name']==$name)
{
echo $i;
break;
}
}
享受
答案 3 :(得分:0)
试试这个:
$name = "Test";
foreach($your_array as $arr){
if($arr['name'] == $name){
echo $arr['id'];
}
}
答案 4 :(得分:0)
您可以在某些功能中手动执行此操作:
function find($items, $something){
foreach($items as $item)
{
if ($item["name"] === $something)
return $item["id"];
}
return false;
}