按键值搜索数组元素

cod*_*gon 2 php keyvaluepair

我有以下 PHP 代码,它通过键名称搜索数组并返回等于搜索的结果。只是出于好奇,我该怎么做,无论我搜索什么结果都会是名称键值等于“A”的元素?很快我怎样才能检索名称为“A”的元素?

\n\n

我尝试了以下方法,但 \xc2\xb4t 有效:

\n\n
$jSearchResult[] = $ajProducts[$i]->name = "A";\n
Run Code Online (Sandbox Code Playgroud)\n\n

请帮助我,因为我只能\xc2\xb4t弄清楚如何通过键值检索数组的元素,但我确信它一定是非常简单的。

\n\n
<?php\n\n//DATA coming from the BROWSER\n$sSearch = $_GET[\'search\'];\n//TURN it into UPPERCASE\nstrtoupper( $sSearch );\n\n//GETTING from the TEXT FILE:\n$sajProducts = file_get_contents( \'products.txt\' );\n$ajProducts = json_decode( $sajProducts );\n\n$match_found = false;\n//Collect all matching result in an array \n$jSearchResult = array();\n//LOOPING THROUGH THE ARRAY OF PRODUCTS\nfor ( $i=0; $i< count( $ajProducts ); $i++ ) {\n\n    if ( $sSearch == $ajProducts[$i]->name ) {\n         $jSearchResult[] = $ajProducts[$i]->name;\n         $match_found = true;    \n    }\n}\n//if there is a match display the product\nif ( $match_found ) {\n    echo json_encode ( $jSearchResult );\n    exit;\n}\n//if not display ALL products\nelse { \n\n     echo json_encode ( $ajProducts );\n     exit;\n}\n\n?>\n
Run Code Online (Sandbox Code Playgroud)\n\n

$ajProducts看起来像这样:

\n\n
[\n    {\n        "id": "59d278cae7017",\n        "name": "A",\n        "price": "1",\n        "quantity": 2,\n        "image": "img_webshop\\/productimage-59d74304917c2.jpg"\n    },\n    {\n        "id": "59d27e20c8028",\n        "name": "A",\n        "price": "2",\n        "quantity": 1,\n        "image": "img_webshop\\/productimage-59d743233c0cf.jpg"\n    },\n    {\n        "id": "59d6a7ae16d15",\n        "name": "A",\n        "price": "3",\n        "quantity": 2,\n        "image": "img_webshop\\/productimage-59d743392fbb5.jpg"\n    },\n    {\n        "id": "59d6d6ee5f752",\n        "name": "A",\n        "price": "4",\n        "quantity": 1,\n        "image": "img_webshop\\/productimage-59d74352d5b94.jpg"\n    },\n    {\n        "id": "59d743d207bd5",\n        "name": "B",\n        "price": "5",\n        "quantity": 1,\n        "image": "img_webshop\\/productimage-59d743d1e6e64.jpg"\n    },\n    {\n        "id": "59d74451225ac",\n        "name": "B",\n        "price": "6",\n        "quantity": 0,\n        "image": "img_webshop\\/productimage-59d7445120871.jpg"\n    },\n    {\n        "id": "59e0d992d1f3b",\n        "name": "C",\n        "price": "6",\n        "quantity": 2,\n        "image": "img_webshop\\/productimage-59e725ac79583.jpg"\n    }\n]\n
Run Code Online (Sandbox Code Playgroud)\n

ob-*_*van 6

有一个 php 函数可以做到这一点: http: //php.net/array_filter

$searchResult = array_filter($ajProducts, function ($product) {
    return $product->name === 'A';
});
Run Code Online (Sandbox Code Playgroud)

这将使您获得$ajProducts属性name设置为 的所有对象'A'

查看是否有结果:

$matchFound = !empty($searchResult);
Run Code Online (Sandbox Code Playgroud)