Autor | Zpráva | ||
---|---|---|---|
HGD Profil |
#1 · Zasláno: 8. 3. 2016, 19:10:23
Prosím o radu, mám vstup z formuláře toto pole
Array ( [0] => Array ( [id_name] => Moje [block_name] => Name [max] => 1 ) [1] => Array ( [id_name] => [block_name] => Name [max] => ) ) a pokud není zadáno "max" tak by se měl řádek, resp. celé pole o 3 prvcích smazat foreach($input as $key => $val){ if(empty($val['max'])){ array_splice($input, $key, 1); } } problém je, že pokud zadám více řádků, kde je pole "max" prázdné, tento cyklus mi smaže jen jeden řádek a ostatní prázdné uloží. Kde dělám chybu? PS.: je to psané pro wordpress |
||
juriad Profil |
#2 · Zasláno: 8. 3. 2016, 19:24:45
Děje se to protože splice mění pole $input foreachi pod rukama.
$output = array_filter($input, function($item) {return !empty($item['max']);}); $output = array_slice($output, 0); |
||
HGD Profil |
#3 · Zasláno: 8. 3. 2016, 20:08:47
jak může měnit pole pro cyklus, když foreach podle php manuálu pracuje s kopií pole... divný
|
||
Keeehi Profil |
#4 · Zasláno: 8. 3. 2016, 20:12:39
Foreach do $val vkládá kopii hodnoty, ale nekopíruje celé pole.
|
||
HGD Profil |
#5 · Zasláno: 8. 3. 2016, 20:38:44
a když k tomu přidám doplnění "id_name"... to taky nepremává :(
foreach($output as $val){ if(empty($val['id_name'])){ $val['id_name'] = $val['block_name']; } } |
||
Keeehi Profil |
#6 · Zasláno: 8. 3. 2016, 22:04:17
foreach($output as &$val){ |
||
Časová prodleva: 7 let
|
0