这就是我在JavaScript中从数组中检索项目的方法,它运行正常:
function getLibItemByName(name){
var index = json.library.findIndex(p => p.name == name);
return json.library[index];
}
我的数组就像:
[
{
"name": "item1"
},
{
"name": "item2"
},
...
]
现在我想知道如何在PHP中做同样的事情?
更新:我想出了现在正在使用的
function getLibItemByName($name){
global $json;
foreach($json['library'] as $key => $val){
if($name === $val['name']){
return $json['library'][$key];
}
}
return false;
}
答案 0 :(得分:1)
使用array_search()函数,它的工作方式如下:
array_search(what_to_search,array_variable,真/假);
FALSE是默认参数。 如果此参数设置为TRUE,则此函数将搜索数组中的相同元素。 设置为true时,数字5与字符串5不同。
以下是给出的示例:
$a=array("a"=>"5","b"=>5,"c"=>"5");
echo array_search(5,$a,true);
如果在数组中找到值,则返回值的键,否则返回FALSE。如果在数组中多次找到该值,则返回第一个匹配的键。
答案 1 :(得分:0)
在PHP中,有一个数组函数cp libgurobi_c++.a ../../lib/
,它匹配其键的值和返回值。它需要array_serach()
作为第一个参数,search value
作为第二个参数。
array
答案 2 :(得分:0)
我会提出两点建议。
array_search()
和array_column()
通过内联评论进行一些解释。
代码:(Demo)
function getLibItemByName($array,$name){ // avoid global, assign $array as parameter
foreach($array['library'] as $key => $row){
if($name === $row['name']){
return $row; // return the whole subarray (this is a simpler expression)
}
}
return false;
}
// logically rename json to array
$array=[
'library'=>
[
['name'=>'Alan','age'=>5],
['name'=>'Bert','age'=>6],
['name'=>'Chad','age'=>7],
['name'=>'Doug','age'=>8],
['name'=>'Eddy','age'=>9],
['name'=>'Fred','age'=>10]
]
];
var_export(getLibItemByName($array,'Chad'));
echo "\n---\n";
var_export(getLibItemByName($array,'Greg'));
echo "\n---\n";
if(($index=array_search('Eddy',array_column($array['library'],'name')))!==false){
var_export($array['library'][$index]);
}else{
echo 'No match';
}
输出:
array (
'name' => 'Chad',
'age' => 7,
)
---
false
---
array (
'name' => 'Eddy',
'age' => 9,
)