2016-04-14 24 views
0

Fatal error: Cannot use [] for reading on line numaralı hatayı, işlev içinde return $array[]; numaralı hatayı alıyorum. json_encodeÖnemli hatayı nasıl çözebilirim: Bu durumda okuma için [] kullanamazsınız

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

yılında,

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

:

ben şöyle çıktı almaya çalışıyorum

, Windows 10. PHP Sürüm 7.0.1 kullanıyorum

Daha önce farklı bir yaklaşım kullandım, ama buna dün geçtim.

Bu işi nasıl alabilirim? Aşağıda

$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); 

o zaman, daha önce yapılan .= parçaları önlemek için yukarıdaki değiştirildi nasıl. Bu yaklaşım çalışır. Bakınız Fiddle. Bu içine

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

:

$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

Aynı endeks 's'' Birinci ve ikinci izin verilmez = 'dizisi –

+0

için çalışmalar' $ dizi döndürmez;. 'Kolay düzeltme – cmorrissey

cevap

1

Sen $ dizinin yerine

Değiştir bu $ dizi [] geri dönüyor

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

düzenleme:

Bu düzeltir sanırım:

<?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

Bunu daha önce yaptık. Aldığım çıktı "{" s ":" Hata Satırı Bir ... <\/i> Hata Satırı İki ... <\/i> "," başarı ": yanlış}. Önerdiğin şeyi yapmak bana tamamen başka bir şey veriyor. – Norman

+0

Aha, kodunuza bakma. Düzeltmek istediğin tek şey, hataydı. Cevabımda bir değişiklik yaptım. Bu –

+0

çalışmalıdır. Bu foreach döngüsü olmadan yapılabilir mi? – Norman

İlgili konular