视图ci上的数组到字符串转换错误

时间:2017-05-17 14:19:36

标签: php

我有一个格式如下的数组

Array ( [0] => Array ( [id] => 13 [path] => Array ( [0] => Array ( [name] => Pistachios [path] => E_906.JPG ) ) ) [1] => Array ( [id] => 14 [path] => Array ( [0] => Array ( [name] => Almonds [path] => almond.jpg ) ) ) )  

现在我需要的是我需要来自这个数组的id,name和path值它基本上有两个索引0和1我为此目的使用foreach循环

这是我的代码

<?php 
foreach ($child3 as $key => $value){
echo $key;
}
?>

当回显键时它打印正确0,1但是当我尝试回显像

这样的值时
<?php 
foreach ($child3 as $key => $value){
echo $value;
}
?> 

它给我一个错误数组到字符串转换任何推荐?

3 个答案:

答案 0 :(得分:1)

在你的第二个foreach循环中,$value是带有键path的数组。 echo()期望字符串作为参数,但因为$value是一个数组,PHP会尝试将其转换为字符串并失败。

请尝试var_dump()

<?php 
foreach ($child3 as $key => $value){
    var_dump($value);
}
?> 

你的结构是这样的:

Array ( 
    [0] => Array (     <<- you tried to echo this array
        [id] => 13 
        [path] => Array ( 
            [0] => Array ( 
                [name] => Pistachios 
                [path] => E_906.JPG 
            )
        )
    ) 
    [1] => Array ( 
        [id] => 14 
        [path] => Array ( 
            [0] => Array ( 
                [name] => Almonds 
                [path] => almond.jpg 
            ) 
        ) 
    )
) 

如果你知道这个结构是固定的,试试这个:

$files = array();
foreach ($child3 as $child) {
    $files[$child['path'][0]['name']] = $child['path'][0]['path'];
}

所以var_dump($files)会给你这个:

Array (
    'Pistachios' => 'E_906.JPG'
    'Almonds' => 'almond.jpg'
)

答案 1 :(得分:1)

试试这个:

foreach ($child3 as $key => $value){
    $id = $value['id'];
    $name = $value['path'][0]['name'];
    $path = $value['path'][0]['path'];
}

**这假设你的[path]总是只包含一个数组元素。

答案 2 :(得分:0)

尝试使用

<?php 
foreach ($child3 as $key => $value){
 print_r($value);
}
?> 

因为你有$ value作为一个数组,这就是你得到这个错误的原因。