PHP多维数组搜索(按特定值查找键)

PHP多维数组搜索(按特定值查找键)

我有这个多维数组。我需要搜索它并只返回匹配“slug”值的键。我知道还有其他关于搜索多维数组的线程,但我并不是真正了解它以适用于我的情况。非常感谢您的帮助!

所以我需要一个像以下的功能:

myfunction($products,'breville-one-touch-tea-maker-BTM800XL');// returns 1

这是阵列:

$products = array (1  => array(
        'name'          => 'The Breville One-Touch Tea Maker',
        'slug'          => 'breville-one-touch-tea-maker-BTM800XL',
        'shortname'     => 'The One-Touch Tea Maker',
        'listprice'     => '299.99',
        'price'         => '249.99',
        'rating'        => '9.5',
        'reviews'       => '81',
        'buyurl'        => 'http://www.amazon.com/The-Breville-One-Touch-Tea-Maker/dp/B003LNOPSG',
        'videoref1'     => 'xNb-FOTJY1c',
        'videoref2'     => 'WAyk-O2B6F8',
        'image'         => '812BpgHhjBML.jpg',
        'related1'      => '2',
        'related2'      => '3',
        'related3'      => '4',
        'bestbuy'       => '1',
        'quote'         => '',
        'quoteautor'    => 'K. Martino',
        ),2  => array(
        'name'          => 'Breville Variable-Temperature Kettle BKE820XL',
        'slug'          => 'breville-variable-temperature-kettle-BKE820XL',
        'shortname'     => 'Variable Temperature Kettle',
        'listprice'     => '199.99',
        'price'         => '129.99',
        'rating'        => '9',
        'reviews'       => '78',
        'buyurl'        => 'http://www.amazon.com/Breville-BKE820XL-Variable-Temperature-1-8-Liter-Kettle/dp/B001DYERBK',
        'videoref1'     => 'oyZWBD83xeE',
        'image'         => '41y2B8jSKmwL.jpg',
        'related1'      => '3',
        'related2'      => '4',
        'related3'      => '5',
        'bestbuy'       => '1',
        'quote'         => '',
        'quoteautor'    => '',
        ),);


不负相思意
浏览 3208回答 3
3回答

凤凰求蛊

此类方法可以通过多个条件在数组中搜索:class Stdlib_Array{     public static function multiSearch(array $array, array $pairs)     {         $found = array();         foreach ($array as $aKey => $aVal) {             $coincidences = 0;             foreach ($pairs as $pKey => $pVal) {                 if (array_key_exists($pKey, $aVal) && $aVal[$pKey] == $pVal) {                     $coincidences++;                 }             }             if ($coincidences == count($pairs)) {                 $found[$aKey] = $aVal;             }         }         return $found;     }    }// Example:$data = array(     array('foo' => 'test4', 'bar' => 'baz'),     array('foo' => 'test',  'bar' => 'baz'),     array('foo' => 'test1', 'bar' => 'baz3'),     array('foo' => 'test',  'bar' => 'baz'),     array('foo' => 'test',  'bar' => 'baz4'),     array('foo' => 'test4', 'bar' => 'baz1'),     array('foo' => 'test',  'bar' => 'baz1'),     array('foo' => 'test3', 'bar' => 'baz2'),     array('foo' => 'test',  'bar' => 'baz'),     array('foo' => 'test',  'bar' => 'baz'),     array('foo' => 'test4', 'bar' => 'baz1'));$result = Stdlib_Array::multiSearch($data, array('foo' => 'test4', 'bar' => 'baz1'));var_dump($result);会产生:array(2) {   [5]=>   array(2) {     ["foo"]=>     string(5) "test4"     ["bar"]=>     string(4) "baz1"   }   [10]=>   array(2) {     ["foo"]=>     string(5) "test4"     ["bar"]=>     string(4) "baz1"   }}

手掌心

非常简单:function myfunction($products, $field, $value){    foreach($products as $key => $product)    {       if ( $product[$field] === $value )          return $key;    }    return false;}
打开App,查看更多内容
随时随地看视频慕课网APP