Задать вопрос

Как получить определенный элемент с массива?

Здравствуйте!
Имеется самый обычный массив c n элементами. В каждом элементе есть параметры такие как:
ID:
TITLE:
TYPE:
COUNTER-ID:
VALUE:


Подскажите пожалуйста, как мне из этого массива получить VALUE последнего элемента где COUNTER-ID = 14.
И VALUE последнего элемента где COUNTER-ID = 15.

На php)
  • Вопрос задан
  • 7475 просмотров
Подписаться 5 Оценить Комментировать
Решения вопроса 1
@wills0n
Массивы через for перебирать не кошерно.

$resultArray = array();
foreach ($array as $element) {
$resultArray[$element['COUNTER-ID']] = $element;
}

echo $resultArray[14]['VALUE']; //VALUE последнего элемента, где COUNTER-ID = 14
echo $resultArray[15]['VALUE']; //VALUE последнего элемента, где COUNTER-ID = 15
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@Confl1kt
перебрать массив - если такой поиск редко используется
если часто - то сделать массив - counter-id => last key

$resultArray = [];
for($i = 0; $i< count($array); $i++){
    $resultArray[$array[$i]['COUNTER-ID']] = $i;
}
echo $resultArray[14]; // последний ключ в массиве для COUNTER-ID == 14
echo $array[$resultArray[14]]['VALUE']; //значение VALUE для последнего Counter-id == 14
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
А что Вам выведет следующий код?

// upd немного исправил

$input = [ /* your array */ ];
$fourteen = array_reverse(
    array_filter(
        $input,
        function($item) { return $item['COUNTER-ID'] == 14; }
    )
);
$needle = isset($fourteen[0]) ? $fourteen[0]['VALUE'] : null;
Ответ написан
Если COUNTER-ID уникален:
function arrRevers(Array &$input_array){
   $result = array();
   foreach($inputArray as $item)
      $result[$item['COUNTER-ID']] = $item;
   $input_array = $result;
}

Использование:
$array = array(/*массив*/);
arrRevers($array);
echo $array[14]['VALUE'];
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы