2016-04-14 17 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

相关问题