2016-04-14 3 views
0

Ich bekomme den Fehler Fatal error: Cannot use [] for reading on line bei return $array[]; innerhalb der Funktion.Wie kann ich lösen Fatal error: Kann nicht verwenden [] zum Lesen in diesem Fall

Ich bin mit PHP Version 7.0.1 unter Windows 10.

Ich versuche, die Ausgabe zu erhalten, wie folgt:

<i>Error Line One...</i><br> 
<i>Error Line Two...</i><br> 

, in json_encode

{"s":"Error Line One...<\/i>Error Line Two...<\/i>","success":false}

Ich habe vorher einen anderen Ansatz gewählt, bin aber gestern zu diesem gewechselt.

Wie kann ich diese Arbeit bekommen?

$errorCount = 1; 

$errors[] = '*Error Line One...'; 
$errors[] = '*Error Line Two...'; 

$errors['success'] = ($errorCount == 0 ? True : False); 

$errors[] = ajax($errors); 

function ajax($array) { 
    $array = preg_replace('#\*(.+?)(?![^*])#','<i>$1</i><br>',$array); 
    return $array[]; 
} 

json_encode($errors); 

Unten ist, wie es vorher getan wurde, änderte sich dann dem oben die .= Teile zu vermeiden. Dieser Ansatz funktioniert. Siehe Fiddle.

$errorCount = 1; 

$errors['s'] = '*Error Line One...'; 
$errors['s'] .= '*Error Line Two...'; 


$errors['s'] = ajax($errors); 

function ajax($array) { 
    $array = preg_replace('#\*(.+?)(?![^*])#','<i>$1</i>',$array); 
    return $array['s']; 
} 
$errors['success'] = ($errorCount == 0 ? True : False); 

echo json_encode($errors); 
+0

gleichen Index 'S' nicht erste und zweite erlaubt '=' nicht funktioniert für Array –

+0

'return $ Array;.' Einfache Lösung – cmorrissey

Antwort

1

Sie kehren $ array [] anstelle von Array $,

ändern diese:

function ajax($array) { 
    $array = preg_replace('#\*(.+?)(?![^*])#','<i>$1</i><br>',$array); 
    return $array[]; 
} 

in diese:

function ajax($array) { 
    return preg_replace('#\*(.+?)(?![^*])#','<i>$1</i><br>',$array); 
} 

edit:

Diese behebt es ich denke:

<?php 

$errorCount = 1; 

$errors[] = '*Error Line One...'; 
$errors[] = '*Error Line Two...'; 
$errors = ajax($errors); 
$errors['success'] = ($errorCount == 0 ? True : False); 

function ajax($array) { 
    foreach ($array as $key => $value) 
     $array[$key] = preg_replace('#\*(.+?)(?![^*])#','<i>$1</i><br>', $value); 
    return $array; 
} 

echo json_encode($errors); 

?> 
+0

ich dies vorher. Die Ausgabe, die ich suche, ist '{" s ":" Fehler Zeile Eins ... <\/i> Fehler Zeile Zwei ... <\/i> "," Erfolg ": false}'. Das zu tun, was Sie vorgeschlagen haben, gibt mir etwas völlig anderes. – Norman

+0

Aha, habe deinen Code nicht angesehen. Ich dachte, das einzige, was du reparieren wolltest, war der Fehler. Ich habe eine Bearbeitung in meiner Antwort vorgenommen. Das sollte funktionieren –

+0

Gibt es eine Chance, dass dies ohne die foreach-Schleife möglich ist? – Norman

Verwandte Themen