2016-08-17 3 views
-2

Ich halte einen fatalen Fehler bekommen, wenn ein Skript auf meinem PHP-Server ausgeführt wird,PHP Fatal Error nicht verwenden kann String Offset Als Array

Diese Web App wurde vor zehn Jahren gebaut und ich bin derzeit Clearing-Fehler, so dass wir beginnen können Aktualisierung es. Aktuelle Version PHP 5.2.17

Fatal error: Cannot use string offset as an array in /home/user/public_html/admin/script.php on line 1418 

Dies ist die Linie der Fehler ist,

 $name = $d["@"]["_Name"]; 

Dies ist die volle Funktion,

 if (isset($b["_BORROWER"]["EMPLOYER"])) { 

      if (!isset($b["_BORROWER"]["EMPLOYER"][0])) { 
       $temp = $b["_BORROWER"]["EMPLOYER"]; 
       unset($b["_BORROWER"]["EMPLOYER"]); 
       $b["_BORROWER"]["EMPLOYER"][0] = $temp; 
      } 

      foreach($b["_BORROWER"]["EMPLOYER"] as $c => $d) { 
       $pid = '0'; 
       // Finish up. 
       $item["type"] = "Personal"; 
       $name = $d["@"]["_Name"]; 
       //check for files in other bureaus 
       $query = doquery("SELECT name,id FROM <<myitems>> WHERE cid='".$client["id"]."' AND type='Personal'"); 
       $results = dorow($query); 
       if($results){ 
        if(isset($results['name'])){ 
         $temp = $results; 
         unset($results); 
         $results[0] = array($temp); 
        } 
        foreach($results as $c){ 
         if(isset($c['name'])){ 
          if($address == decrypt_string($c['name'])) { 
           $pid = $c['id']; 
           break; 
          };         
         } 
        } 
       } 

Hat jemand verstehen, was diesen Fehler auslöst und wie man repariere es?

+0

Nun, ich bin definitiv nicht zu zweifeln, dass dies vor 10 Jahren gemacht wurde. Können Sie 'var_dump ($ d);' vor dieser Zeile und zeigen Sie uns, was erscheint? – Darren

+0

Stellen Sie sicher, dass '$ d [" @ "]' ein Array ist. – axiac

+0

Ich war super zu erwarten, dass wir uns dafür entschieden haben. Mein Hauptproblem hier ist die Replikation des Problems in einer Entwicklungsumgebung ist sehr hart Casue diese App ist so umfangreich, und dieser Client hatte keine dev env Setup. Ich sortiere sehr alten Code, der verwendet wird. Dieses Skript führt eine 3rd-Party-App, die den Client 50 Dollar kostet, wenn es läuft, so bin ich sehr skeptisch, wie das zu testen ist. – wuno

Antwort

0

Sie können isset() verwenden Sie den Array-Wert zu überprüfen, existiert oder nicht mögen,

$name = isset($d["@"]["_Name"]) ? $d["@"]["_Name"] : ""; 
Verwandte Themen