Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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/1/php/283.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/8/qt/7.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中JavaScript findIndex()的等价物_Javascript_Php_Arrays_Indexof - Fatal编程技术网

PHP中JavaScript findIndex()的等价物

PHP中JavaScript findIndex()的等价物,javascript,php,arrays,indexof,Javascript,Php,Arrays,Indexof,这就是我在JavaScript中从数组中检索项目的方式,它工作正常: function getLibItemByName(name){ var index = json.library.findIndex(p => p.name == name); return json.library[index]; } 我的数组如下所示: [ { "name": "item1" }, { "name": "item2"

这就是我在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;
}

在PHP中,有一个数组函数
array\u serach()
,它匹配值并返回其键。它将
搜索值
作为第一个参数,将
数组
作为第二个参数

    $array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

    $key = array_search('green', $array); // $key = 2;
    $key = array_search('red', $array);   // $key = 1;
使用array_search()函数,其工作原理如下:

数组搜索(什么搜索,数组变量,真/假)

FALSE是默认参数。 如果此参数设置为TRUE,则此函数将在数组中搜索相同的元素。 设置为true时,数字5与字符串5不同

以下是给定的示例:

$a=array("a"=>"5","b"=>5,"c"=>"5");
echo array_search(5,$a,true);

如果在数组中找到值,则返回该值的键,否则返回FALSE。如果在数组中多次找到该值,将返回第一个匹配的键。

我将提供两个建议

  • 对foreach循环方法进行一些调整
  • array\u search()
    array\u column()的组合
  • 通过内联注释进行一些解释

    代码:()

    输出:

    array (
      'name' => 'Chad',
      'age' => 7,
    )
    ---
    false
    ---
    array (
      'name' => 'Eddy',
      'age' => 9,
    )
    

    你是说
    array\u search()
    ?请设置一个php示例。可能有不止一种方法,这取决于您的数据结构和值,一种方法可能比另一种更好。PHP的结构与Javascript不同,比如关联数组。PHP中没有完全类似findIndex的功能,但是有几个函数可以根据您的用例产生类似的结果,PHP中没有本机函数可以做到这一点。使用
    array\u filter
    然后从结果中抓取第一个键可以实现您想要的功能,但这可能不会根据数组的大小来执行。
    array\u search
    array\u列
    结合使用。
    array (
      'name' => 'Chad',
      'age' => 7,
    )
    ---
    false
    ---
    array (
      'name' => 'Eddy',
      'age' => 9,
    )