2016-04-14 18 views
0

讀數return $array[];在函數內部得到的錯誤Fatal error: Cannot use [] for reading on line我怎樣才能解決致命錯誤:我不能用[]在這種情況下

我使用PHP 7.0.1版在Windows 10

我試圖得到的輸出如下:

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

,在json_encode

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

我以前使用過不同的方法,但是昨天切換到了這個方法。

我怎樣才能得到這個工作?

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

下面是怎麼回事以前也做過,則改爲以上,以避免.=部分。這種方法起作用。見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

相同指數's'不準第一和第二'='不是陣列 –

+0

作品'$返回數組;'容易解決 – cmorrissey

回答

1

您正在返回$ []數組,而不是$數組,

更改此:

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

成這樣:

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

編輯:

這修復它我猜:

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

我這樣做過。我希望得到的輸出是'{「S」:「錯誤一號線... <\/i>錯誤行兩... <\/i>」,「成功」:假}'。做你的建議給了我一些其他的東西。 – Norman

+0

啊哈,沒看你的代碼。我認爲你唯一想解決的問題就是錯誤。我在回答中做了一個編輯。這應該工作 –

+0

任何機會,這可以做到沒有foreach循環? – Norman

相關問題