如何解决致命错误:在这种情况下不能使用[]进行读取

时间:2016-04-14 15:08:20

标签: php

我在函数内的Fatal error: Cannot use [] for reading on line处收到错误return $array[];

我在Windows 10上使用PHP V7.0.1。

我试图获得如下输出:

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

1 个答案:

答案 0 :(得分:1)

您将返回$ array []而不是$ array,

改变这个:

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

?>