Здравствуйте, всем доброго времени суток!
Суть такова, есть переменные вида
$a_data[45]
к примеру.
Устанавливаются они путем
explode()
, но часто установка значений имеет условия. И если оно не выполнено, explode() пропускается и соответственно
$a_data[]
остается пустым. Но в коде по умолчанию в разных его местах идет условие на проверку по типу:
if($a_data[45] == 200)
или сразу какое-либо выражение с этой переменной по типу:
$prem = ($a_data[45] + 1345)*100;
И если
$a_data[45]
не был назначен изначально, так как explode() был пропущен в ходе выполнения условия, то PHP ругается:
Undefined array key 45
Попробовал избежать этого, изначально поместив назначение по умолчанию, задав ключи в циклах:
for($k = 0; $k< 100; $k++){$a_data[$k]=0;}
for($k = 0; $k< 100; $k++){$b_data[$k]=0;}
for($k = 0; $k< 100; $k++){$c_data[$k]=0;}
for($k = 0; $k< 100; $k++){$d_data[$k]=0;}
unset($k);
Но это прям ужасный костыль, который нагружает систему и занимает дополнительное время на обработку. Столько разных циклов, только что бы избежать
Warning
от PHP.
Пробовал разные методы, назначения по умолчанию, но все они упираются обычно в то, что ключи имеют именные названия, но тут все ключи цифирные, и соответственно
key 45
будет и у
$a_data[45]
и у
$c_data[45]
, но их значения могут сильно отличаться.
Ну и вот вопрос, можно ли как-то коротко, элегантно и с наименьшей нагрузкой заменить этот ужас
for($k = 0; $k< 100; $k++){$a_data[$k]=0;} ;
for($k = 0; $k< 100; $k++){$b_data[$k]=0;} ;
for($k = 0; $k< 100; $k++){$c_data[$k]=0;} ;
for($k = 0; $k< 100; $k++){$d_data[$k]=0;} ;
unset($k);
Каким-то более быстрым и правильным методом?
Начальная задача такова: нужно, что бы
Warning
пропали, но не методом его отключения, а что бы все ключи по умолчанию принимали какое-то значение "" или 0.
А в ходе выполнения кода, уже это значение будет переназначаться, если будет такой момент. Если не будет, то переменная с ключом будет не пустой.