按键值搜索数组的元素

时间:2018-02-02 16:18:47

标签: php keyvaluepair

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

我尝试了以下但不起作用:

$jSearchResult[] = $ajProducts[$i]->name = "A";

请帮助我,因为我只是无法弄清楚如何通过键值来检索数组的元素,但是我确信它必须非常简单。

<?php

//DATA coming from the BROWSER
$sSearch = $_GET['search'];
//TURN it into UPPERCASE
strtoupper( $sSearch );

//GETTING from the TEXT FILE:
$sajProducts = file_get_contents( 'products.txt' );
$ajProducts = json_decode( $sajProducts );

$match_found = false;
//Collect all matching result in an array 
$jSearchResult = array();
//LOOPING THROUGH THE ARRAY OF PRODUCTS
for ( $i=0; $i< count( $ajProducts ); $i++ ) {

    if ( $sSearch == $ajProducts[$i]->name ) {
         $jSearchResult[] = $ajProducts[$i]->name;
         $match_found = true;    
    }
}
//if there is a match display the product
if ( $match_found ) {
    echo json_encode ( $jSearchResult );
    exit;
}
//if not display ALL products
else { 

     echo json_encode ( $ajProducts );
     exit;
}

?>

$ajProducts看起来像这样:

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

2 个答案:

答案 0 :(得分:3)

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

$searchResult = array_filter($ajProducts, function ($product) {
    return $product->name === 'A';
});

这将为$ajProducts name属性设置为'A'的所有对象提供支持。

要查看是否有任何结果:

$matchFound = !empty($searchResult);

答案 1 :(得分:1)

如果您想要matchname key等于"A"的{​​{1}}个元素,那么您可以使{name}的值check等于{{1}喜欢 -

"A"
相关问题