我有这个错误警告:strtolower()期望参数1是字符串,给定数组.. 我不知道我的错误是什么..请帮助谢谢!
$mypages = array(
'Pages' => array('page' => array('view_all_pages', 'add_page', 'dashboard'),
'test' => array('test1', 'test2')),
'Users' => array('vieW_all_users', 'add_user'));
foreach($mypages as $keys => $key):
if(is_array($key)):
$key = array_map('strtolower' ,$key);
endif;
endforeach;
答案 0 :(得分:1)
foreach是一个循环,它将为您提供数组的第一级key =>值对。
foreach($mypages as $keys => $key){
echo "Key : $keys \n";
echo "Value : ";var_dump($key);
}
将输出:
Key : Pages
Value : array('page' => array('view_all_pages', 'add_page', 'dashboard'), 'test'=> array('test1', 'test2')),
Key : Users
Value : array('vieW_all_users', 'add_user')
要使其正常工作,您需要检查该值是否为数组。
function strtolowerArray(&$arr){
foreach($arr as $k=>$v){
if(is_array($v)){
$arr[$k] = strtolowerArray($v);
}
else if(is_string($v)){
$arr[$k] = strtolower($v);
}
else{
throw new \LogicException("The value is neither a string nor an array");
}
}
return $arr;
}
$mypages = array(
'Pages' => array(
'page' => array('view_ALL_pages', 'aDD_page', 'DaShbOArd'),
'test' => array('test1', 'TEST2')
),
'Users' => array('vieW_all_users', 'aDd_uSer')
);
var_dump(strtolowerArray($mypages));
'&'在strtolowerArray参数前面意味着我们通过引用传递teh变量。如果strtolowerArray函数范围内的这些变量发生任何变化,那么它将反映到父范围内。
答案 1 :(得分:0)
$mypages['Pages']['page']
不包含可传递给strtolower()
的字符串。
您应该通过在循环中转储$key
进行调试。
答案 2 :(得分:0)
您的阵列中有阵列哟!
在请求(并尝试转换)值之前,您必须迭代到数组中。 尝试有条件地穿过阵列,例如
//pseudo
func myRecursion($data = array()) {
foreach($data as $value) {
if(is_array($value)) {
$data = myRecusion($data[$value]);
} else {
//its not an array so do your thing
}
}
return($data);
}