PHP условно извлекает данные из массива

Я новичок в PHP. Мне нужно отфильтровать ответ сервера, чтобы повысить производительность. У меня есть полезная нагрузка, разделенная символом канала и нарезанная, чтобы получить только те данные, которые мне нужны:

$alllogsplitted = explode("|",$row['PAYLOAD']); 
print_r(array_slice($alllogsplitted, 23, 22));

Данные в каждой позиции имеют одинаковую структуру, например: A1;0;0 означает: type;firstvalue;secondvalue. Теперь я хочу получить только данные, если firstvalue отличен от нуля. Фактический ответ:

  Array
  (
      [0] => A1;0;0
      [1] => A2;0;0
      [2] => A3;0;0 
      [3] => A4;0;0
      [4] => A5;0;1593720
      [5] => A6;0;0
      [6] => A7;0;29
      [7] => A8;3;0 // this data is to retrieve
      [8] => A9;0;0
      [9] => A13;0;0
      [10] => A14;0;0
      [11] => A23;1;33802 // this data is to retrieve
      [12] => A25;0;2706254
      [13] => A27;0;100
      [14] => A30;0;0
      [15] => A31;0;100785
      [16] => A32;0;0
      [17] => A33;0;0
      [18] => A34;0;0
      [19] => A47;0;128694
      [20] => A48;0;2
      [21] => B1;0;145
  )
  Array
  (
      [0] => A1;0;0
      [1] => A2;0;0
      [2] => A3;0;0
      [3] => A4;0;0
      [4] => A5;0;1593688
      [5] => A6;0;0
      [6] => A7;0;29
      [7] => A8;3;0 // this data is to retrieve
      [8] => A9;0;0
      [9] => A13;0;0
      [10] => A14;0;0
      [11] => A23;0;33802
      [12] => A25;0;2706254
      [13] => A27;0;100
      [14] => A30;0;0
      [15] => A31;0;100785
      [16] => A32;0;0
      [17] => A33;0;0
      [18] => A34;0;0
      [19] => A47;0;128694
      [20] => A48;0;2
      [21] => B1;0;145
  )
  Array
  (
      [0] => A1;0;0
      [1] => A2;0;0
      [2] => A3;2;1 // this data is to retrieve
      [3] => A4;0;0
      [4] => A5;0;1593688
      [5] => A6;0;0
      [6] => A7;0;26
      [7] => A8;0;981
      [8] => A9;0;0
      [9] => A13;0;0
      [10] => A14;0;0
      [11] => A23;0;33802
      [12] => A25;0;2706254
      [13] => A26;0;3
      [14] => A27;0;100
      [15] => A30;0;0
      [16] => A31;0;100785
      [17] => A32;0;0
      [18] => A33;0;1
      [19] => A34;0;0
      [20] => A47;0;128694
      [21] => A48;0;2
  )

И я хочу вместо этого такой ответ:

  Array
  (
      [7] => A8;3;0 // this data is to retrieve
      [11] => A23;1;33802 // this data is to retrieve
  )
  Array
  (
      [7] => A8;3;0 // this data is to retrieve
  )
  Array
  (
      [2] => A3;2;1 // this data is to retrieve
  )

Как я могу это получить? Спасибо за помощь!

Есть ли у вас попытки показать нам, что вы пытались решить эту проблему самостоятельно?

CBroe 12.06.2018 11:41

array_filter () принимает обратный вызов.

GordonM 12.06.2018 11:46

Я пробую использовать цикл for, но сейчас у меня нет метода массива PHP, и у меня нет положительных результатов, поэтому я прошу Вас помочь в этом

ufollettu 12.06.2018 11:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
3
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это может помочь: $ array - это массив, который вы хотите отфильтровать.

foreach ($array as $key => $value) {
    $columns = explode(';', $value);
    if ($columns[1] != 0) {
        $columns = implode(';', $columns);
        $result[$key] = $columns;
    }
}
Ответ принят как подходящий

Эта функция должна помочь вам. Он проходит через массив и сохраняет экземпляры только в соответствии с указанными вами условиями.

function filterArrayForResult($array) {
    $newArray = array_filter($array, function($string) {
        $stringArray = explode(';', $string); // Creates an array from the string

        return ($stringArray[1] != 0); // Only keep the elements that equals true
    });

    return $newArray // Return the result
}

спасибо, работает очень хорошо!

ufollettu 12.06.2018 13:56

Другие вопросы по теме