@Zimaell

Как пройтись по заполненным значениям массива?

У меня есть массив такого типа
$arr=array(
  ["0,0"]=>array(),
  ["1,0"]=>array("test1"),
  ["2,0"]=>array(),
  ["3,0"]=>array("test2"),
  ["4,0"]=>array(),
  ["5,0"]=>array(),
........
  ["50,50"]=>array(),
........
  ["100,100"]=>array()
  );
foreach($arr as $k=>$v){
  if(!empty($v)) .....
  }

Массив может быть в несколько тысяч записей, а заполненных записей может быть десятки.
Чтобы мне узнать какие заняты значения у ключей мне нужно пробегать весь массив, это накладно, так как чтобы узнать какие 10 к примеру заняты нужно перебирать весь массив в 1000 к примеру записей.

Можно ли как-то перебирать массив так чтобы в переборе участвовали только записи с заполненными значениями?
Если да то как это сделать?

Массив со временем может меняться, так что пройтись сразу и записать какие заполненные не подойдет...
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
в программировании нет волшебных палочек, аленьких цветочков, магии вуду и прочих чудес.
оно ничем не отличается от реальной жизни.
нельзя узнать, в каком кармане у тебя лежат деньги, не прверив все карманы
чтобы узнать, пустой элемент массива, или нет, к нему надо обратиться
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Spartak-2205
@Spartak-2205
Разработка и создание сайтов
Можно ли как-то перебирать массив так чтобы в переборе участвовали только записи с заполненными значениями?
Если да то как это сделать?


Можете сначала отфильтровать массив, убрав пустые значения/массивы. И потом работать с массивом который что-то содержит

$arr = [
	"0,0" => [],
	"1,0" => ["test1"],
	"2,0" => [],
	"3,0" => ["test2"],
	"4,0" => [0],
	"5,0" => [],
	"6.0" => "0",
	"7.0" => 0
];

$new_arr = array_filter($arr, function($element) {return !empty($element);});
//или
//$new_arr = array_filter($arr);

print_r($new_arr);
/*
Array
(
    [1,0] => Array
        (
            [0] => test1
        )

    [3,0] => Array
        (
            [0] => test2
        )

    [4,0] => Array
        (
            [0] => 0
        )

)
*/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
22 апр. 2024, в 16:15
18000 руб./за проект
23 апр. 2024, в 16:55
10000 руб./за проект