关联数组$ myArray的var_dump如下:
array (size=522)
0 =>
array (size=3)
'id' => int 1
'url' => string 'introduction' (length=12)
'title' => string 'Introduction' (length=12)
1 =>
array (size=3)
'id' => int 2
'url' => string 'first_steps' (length=11)
'title' => string 'First steps' (length=11)
2 => ...
当我将关联数组中的元素值赋给函数时,为了执行某些字符串操作,我收到错误:
“可捕获的致命错误:传递给doStringManipulation()的参数1必须是字符串的实例,给定字符串,......”
在foreach循环中调用字符串操作:
foreach($myArray as $row){
...
$s = doStringManipulation((string) $row['url']); // triggers error
...
}
function doStringManipulation(string str){
...
return $result; // string
}
我是否将$ row ['url']转换为字符串并没有什么区别。我总是得到错误,即使var_dump确认元素值是一个字符串。
我在这里缺少什么?
谢谢!
答案 0 :(得分:0)
您使用的是php 5.0-5.6版。你不能指定字符串作为函数参数。 代码必须看起来像
/**
* @var String str
*/
function doStringManipulation(str){
...
return $result; // string
}
或者将php更新到7
答案 1 :(得分:0)
我假设你没有使用php 7。
错误表明它需要一个字符串实例(php没有),这是因为你在string
中键入了提示function doStringManipulation(string str){
。类型提示不适用于除数组和对象之外的任何内容。
我的建议:
function doStringManipulation($str) { // assuming 'str' was a typo here
if ( ! is_string($str)) {
return '';
}
...
return $result; // string
}
有关详细信息,请参阅:http://php.net/manual/en/migration70.new-features.php