|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-03-14 10:10 UTC] ned at wgtech dot com
I have code that traps all errors in a multidimentional array. The array is structured so each row has a numerical key (ie $errors[] = array('err_code'=>12, 'err_file'=>'happy.php');). You get the idea. For error handling I have a function within a class that will accept an error array and do output based on it. The function is as follows:
function pass_err_row($errors, $default_val=NULL, $override_val=NULL) { // Throw errors based on err_file or default
if (is_null($default_val)) {$default_val=PATH_TO_ROOT.LOC_ERROR."DEFAULT/errors.php";}
if (!is_null($override_val)) {
foreach($errors as $error_row) {
include($override_val);
}
}
else {
foreach($errors as $error_row) {
if ($error_row['handle_file']!==FALSE && $error_row['handle_file']!=="") {
include($error_row['handle_file']);
}
else {
include($default_val);
}
}
}
}
This works great as long as the array passed has more than one error (each error being another array) in it. So if $errors[0] and $errors[1] both exist, everything works. Where it gets really wacky is if only $errors[0] exists then the foreach loops results in very strange results. Each error array row in $errors consists of the following 8 indexes:
'err_no', 'err_text', 'err_file', 'err_line', 'system_err', 'handle_file', 'handle_code', 'severity'.
What happens is the foreach loops 8 times with $error_row being equal not to the array in $errors[0] but being equal to an value in the sub array. So the first result would be the equivalent of $errors[0]['err_no']'s value. $errors is still an array, so why would the for each instead use the sub array? very weird.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 21:00:01 2025 UTC |
print_r($data) results : Array ( [item] => Array ( [stats] => Array ( [0] => Array ( [Date] => 05/23/2007 [ProgID] => 12 [Info] => 12 ) [1] => Array ( [Date] => 05/01/2006 [ProgID] => 21 [Info] => 11 ) I tried using : foreach ($data['item']['stats'] as $x) { echo $x['ProgID']; } It works fine as long as stats array has more than 1 array, but if the structure is : Array ( [item] => Array ( [stats] => Array ( [0] => Array ( [Date] => 05/01/2006 [ProgID] => 12 [Info] => 12 ) Using same foreach loop, it shows wrong data. Any ideas ?