php - Foreach and unset() -
ran little snag , wondering if there "best practices" way around it.
so learned "a php foreach execute on entire array regardless. test unsetting value next in iteration. iterate on offset, value null. – kevin peno dec 22 '09 @ 21:31" how remove array element in foreach loop?
it's first part of that messing me. i'm iterating through array foreach. it's search function i'm removing element searched for, when loop runs again minus element.
i not want reindex if @ possible, although if have can.
array ( [0] => array ( [0] => [1] => aa [2] => aaa ) [1] => array ( [0] => b [1] => bb [2] => bbb ) [2] => array ( [0] => c [1] => cc [2] => ccc ) [3] => array ( [0] => d [1] => dd [2] => ddd )
)
foreach($array $key=>$value) { $searchresult[] = search function returns various other keys array foreach($searchresult $deletionid) { unset($array[$deletionid]); } }
so on first iteration uses $array[0] $searchresults might return 4,5,6,7. keys removed $array.
yet foreach loop still iterates through , gives me bunch of empty arrays.
i did read how php 'foreach' work? , of it.
thanks
in opinion, best way remove array elements based on indexes use array_* set of functions, array_diff , array_intersect (or array_diff_key , array_intersect_key in situation).
$indexes_to_remove = array(2,3,4); $indexes_to_remove = array_flip($indexes_to_remove); $array = array_diff_key($array,$indexes_to_remove);
Comments
Post a Comment