Поиск элементов массива по значению ключа

У меня есть следующий код PHP, который ищет массив по имени ключа и возвращает результат, равный поиску. Просто для любопытства, как я могу это сделать, чтобы независимо от того, что я ищу в результате, были элементы, в которых значение ключа имени равно «А»? Вкратце, как я могу получить элементы с именем «А»?

Я попробовал следующее, но это не работает:

$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"}
]

0

Решение

Есть функция php, которая делает именно это: http://php.net/array_filter

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

Это даст вам все объекты в $ajProducts имеющий name свойство установлено в 'A',

Чтобы увидеть, есть ли какие-либо результаты:

$matchFound = !empty($searchResult);
3

Другие решения

Если хотите match элементы, в которых name key значение равно "A"тогда вы можете просто сделать check со значением имени ключа равно "A" лайк —

foreach ($ajProducts as $ajProduct ) {

if ( "A" == $ajProduct->name ) {
$jSearchResult[] = $ajProduct->name;
$match_found = true;
}
}
1

По вопросам рекламы [email protected]