Поиск в массиве возвращает неверный результат

Я получил массив, как это

Array
(
[hash] => 9761d3233f9cb256c0992be

[total] => 2736712601
[received] => 2017-01-13T21:43:32.047Z
[income] => Array
(
[0] => Array
(
[value] => 647262
[addresses] => Array
(
[0] => Address_1
)
)

[1] => Array
(
[value] => 17200000
[addresses] => Array
(
[0] => Address_2
)
)

[2] => Array
(
[value] => 3729034
[addresses] => Array
(
[0] => Address_3
)
)

[3] => Array
(
[value] => 2414997500
[addresses] => Array
(
[0] => Address_4
)
)

[4] => Array
(
[value] => 10856454
[addresses] => Array
(
[0] => Address_5
)
)
)
)

Таким образом, в моей базе данных я храню хэш (9761d3233f9cb256c0992be). Я хеш и адрес. Затем, основываясь на них, я сопоставляю правильный массив из [income], Когда я нашел правильный адрес в income я возьму [value] и показывая это на странице. Вот как я это сделал

$url=get_curl_content("https://example.com/".$order->hash);

$totala =json_decode($url,true);

....
$match = true;
foreach ($totala['income'] as $data) {
if ($data['addresses'] == $order->address) {
$match = $data;
break;
}
}
$price = $data['value'];

Проблема в том, что я ожидаю Address_2 потому что в базе данных я сохранил Address_2 у меня есть Address_3 вместо.

Когда я var_dump($data['addresses']) я получил Address_3, В чем может быть проблема?

1

Решение

Попробуй вот так. Он будет искать и сопоставлять в массиве, используя in_array функция

$match = true;

foreach ($totala['income'] as $data) {

if (in_array($order->address, $data['addresses'])) {
$match = $data;
break;
}

}
$price = $match['value'];
1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector