2016-07-21 11 views
0

Ich habe $arrLevel von lopping Ergebnis:Loop Through Offset in PHP

Array 
(
    [0] => Array 
     (
      [ohp_id] => 98 
      [parent_ohp_id] => 84 
      [organization_id] => 122 
      [position_id] => 32 
      [level] => 3 
      [seat] => 1 
      [description] => 
      [start_date] => 2016-07-21 
      [end_date] => 
      [title] => Coordinator Of Support Operational and Mainte 
     ) 
) 
Array 
(
    [0] => Array 
     (
      [ohp_id] => 84 
      [parent_ohp_id] => 
      [organization_id] => 122 
      [position_id] => 2 
      [level] => 2 
      [seat] => 1 
      [description] => 
      [start_date] => 2016-07-21 
      [end_date] => 
      [title] => Chief 
     ) 
) 

etc... 

Einer von ihnen null parent_ohp_id hat, und in meinem Code gibt es Fehler Notice: Undefined offset: 1. dies ist mein Code:

for ($i = 0; $i < count($arrPosition); $i++) { 
      $hasPosition->loadHas($orgId, $arrPosition[$i]); 
      $level = search($arr, 'level', $arrLevel[$i]); 
      //print_r($level); 
      if(isset($level[$i]['parent_ohp_id'])){ 
       if((int)$level[$i]['parent_ohp_id'] == (int)$level[$i]['ohp_id']){ 
        $parentOhp = null; 
       } 
       else{ 
        $parentOhp = $level[$i]['parent_ohp_id']; 
       } 
      } 
      else{ 
       $parentOhp = null; 
      } 
etc... 

Ursache, die Loop-Prozess stoppen und alle Array versetzt, nachdem es nicht zeigen kann/können Looping nicht fortgesetzt werden. wie man es repariert und einen undefinierten Offset parent_ohp_id auf null setzt? Dank ...

Antwort

0

Ich glaube, Sie statt isset() empty() verwenden sollte:

for ($i = 0; $i < count($arrPosition); $i++) { 
     $hasPosition->loadHas($orgId, $arrPosition[$i]); 
     $level = search($arr, 'level', $arrLevel[$i]); 
     //print_r($level); 
     if(!empty($level[$i]['parent_ohp_id'])){ 
      if((int)$level[$i]['parent_ohp_id'] == (int)$level[$i]['ohp_id']){ 
       $parentOhp = null; 
      } 
      else{ 
       $parentOhp = $level[$i]['parent_ohp_id']; 
      } 
     } 
     else{ 
      $parentOhp = null; 
     } 
+0

ersetzen kann Fehler behoben ist, aber immer noch nicht –

0

Sie haben einige Arrays

  • $arrPosition
  • $arrLevel
  • $level

mit demselben Schlüssel $i innerhalb der Schleife. Da $i einfache Integer-Iteration ist dann vor der Schleife können Sie diesen Code sicher sein, verwenden, dass alle Tabellen, die den gleichen ganzzahlige Schlüssel haben (ohne möglich fehlt)

$arrPosition = array_values($arrPosition); 
$arrLevel = array_values($arrLevel); 
$level = array_values($level); 

Ich denke, dass Sie alle das Element mit dem Index müssen $i in jedem genannten Array so sollten Sie diese Zeile direkt nach der for-Anweisung Schleife

if (array_key_exists($i, $arrPosition) and array_key_exists($i, $arrLevel) and array_key_exists($i, $level)) { 
    //do everything you need inside loop 
} //this close brace is just before brace closing your for loop 

Diese Anweisung im Code

if(isset($level[$i]['parent_ohp_id'])){ 
hinzufügen

sollte

if(!empty($level[$i]['parent_ohp_id'])) { 

Nach ersetzen werden über Sie Ihren Code mit diesem

$arrPosition = array_values($arrPosition); 
$arrLevel = array_values($arrLevel); 
$level = array_values($level); 

for ($i = 0; $i < count($arrPosition); $i++) { 
    if (array_key_exists($i, $arrPosition) and array_key_exists($i, $arrLevel) 
     $hasPosition->loadHas($orgId, $arrPosition[$i]); 
     $level = search($arr, 'level', $arrLevel[$i]); 
     //print_r($level); 
     if(!empty($level[$i]['parent_ohp_id'])) { 
      if((int)$level[$i]['parent_ohp_id'] == (int)$level[$i]['ohp_id']) { 
       $parentOhp = null; 
      } else { 
       $parentOhp = $level[$i]['parent_ohp_id']; 
      } 
     } else { 
      $parentOhp = null; 
     } 

etc... [remember to close the if statement before closing for loop] 
+0

Looping weiterhin kann Fehler behoben ist, aber immer noch nicht Looping weiter –

+0

Ich habe meine Antwort verbessert. Wenn es jetzt funktioniert, dann mache bitte einen var_dump für jedes Array und poste das Ergebnis in Frage. – zajonc