bismoney
@bismoney

Как исправить баг после обновления php 7 и Yii2?

Ребята хелпаните плиз, я слаб...

Есть код который сохраняет выбранные продукты:
// сохраняем открытые продукты
			foreach ($this->openProducts as $keyIdProj => $projProdOpen) {

				foreach ($projProdOpen as $key => $value) {

					for ($x = 0; $x < count(array($value)); $x++) {
						if (!$value[$x]) {
							continue;
						}



						$rec = new ProductsOpen();
						$rec->id_user = $this->id;
						$rec->id_product = $value[$x];
						$rec->save();
						if ($rec->errors) {
							//var_dump($rec->errors);
							exit();
						}

						$openProduct[] = $rec;
					}
				}

			}


Так как проекта пока 3
var_dump($this->openProducts);

Выдает 3 массива
Именно в одном из я открыл 3 новых страницы с теми ID что там есть.

array (size=3)
  1 => 
    array (size=2)
      'products' => string '' (length=0)
      'packs' => string '' (length=0)
  2 => 
    array (size=2)
      'products' => 
        array (size=3)
          0 => string '175' (length=3)
          1 => string '176' (length=3)
          2 => string '186' (length=3)
      'packs' => string '' (length=0)
  3 => 
    array (size=2)
      'products' => string '' (length=0)
      'packs' => string '' (length=0)


Смотрим данные в цикле

foreach ($this->openProducts as $keyIdProj => $projProdOpen) {
				var_dump($projProdOpen); exit;


Получается он берет первый и пустой

array (size=2)
  'products' => string '' (length=0)
  'packs' => string '' (length=0)


Логично что:

foreach ($projProdOpen as $key => $value) {

					var_dump($value); exit;


Выдает:
:138:string '' (length=0)

И соответственно получаем ошибку php7 что count не будет считать пустоту , ей нужен массив.

for ($x = 0; $x < count($value); $x++) {

Даже не знаю как вернуть все в работу после обновы.
Как заставить его выбирать только заполненные массивы?


То есть может быть и так:
array (size=3)
  1 => 
    array (size=2)
      'products' => string '' (length=0)
      'packs' => string '' (length=0)
  2 => 
    array (size=2)
      'products' => 
        array (size=3)
          0 => string '175' (length=3)
          1 => string '176' (length=3)
          2 => string '182' (length=3)
      'packs' => string '' (length=0)
  3 => 
    array (size=2)
      'products' => 
        array (size=1)
          0 => string '214' (length=3)
      'packs' => string '' (length=0)


И так тоже:
array (size=3)
  1 => 
    array (size=2)
      'products' => 
        array (size=5)
          0 => string '150' (length=3)
          1 => string '166' (length=3)
          2 => string '149' (length=3)
          3 => string '169' (length=3)
          4 => string '181' (length=3)
      'packs' => string '' (length=0)
  2 => 
    array (size=2)
      'products' => 
        array (size=5)
          0 => string '175' (length=3)
          1 => string '176' (length=3)
          2 => string '182' (length=3)
          3 => string '183' (length=3)
          4 => string '185' (length=3)
      'packs' => string '' (length=0)
  3 => 
    array (size=2)
      'products' => 
        array (size=1)
          0 => string '214' (length=3)
      'packs' => string '' (length=0)


Также насколько я знаю даже если все решить то string count не будет считать надо преобразовать в int?

Прошу без камней, только разбираюсь и в голову стукнуло все обновить... 6 часов уже...с меня печеньки с кофе :)

Если что-то не понятно, дополню....
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
@tukreb
Не нравиться, что php начал бить по рукам за гавно код? :)
В чём проблема проверять, приходит ли туда массив?
https://www.php.net/manual/ru/function.is-array.php
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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