警告第19行上的非法字符串偏移'文件'

时间:2017-07-08 10:29:10

标签: php arrays

简单数组给出错误。

警告第19行上的非法字符串偏移'文件'

任何帮助都会很棒

<?php
  //    $someffdd is output of print_r

$someffdd="Array
(
    [file] => Array
        (
            [name] => 2Pcs-font-b-Mini-b-font-font-b-Couple-b-font-Lover-Animal-DIY-Resin-Fairy-32-185x215.jpg
            [type] => application/octet-stream
            [tmp_name] => /tmp/phpwhglrk
            [error] => 0
            [size] => 8713
        )

)";

            foreach((array) $someffdd as $value ) {


    $jkgkgff=$value['file'];

echo $jkgkgff;
}

?>

尝试了所有类型的组合,但没有任何错误。我想输出名称值

2 个答案:

答案 0 :(得分:0)

您无法将print_r()(或var_dump())的输出解析回PHP中的数组。所以(array)$someffdd会失败,你将循环一个字符串(即$value第一次是'A',然后是'r',然后是另一个'r',然后'a'和等等,直到它到达最后')')。

如果您无法将$someffdd的来源更改为PHP可以使用json_encode()serialize()var_export()解析的内容,您可以使用正则表达式来匹配{ {1}}字符串的一部分,或使用一些name魔法:

strpos()/substr()

答案 1 :(得分:0)

不确定此数组的来源,但是当数组具有正确的字符串值时,只需调用键值parent / child即可正常工作: *您的阵列当前状态未正确配置。

$someffdd = Array (
    "file" => Array (
        "name" => "2Pcs-font-b-Mini-b-font-font-b-Couple-b-font-Lover-Animal-DIY-Resin-Fairy-32-185x215.jpg",
        "type" => "application/octet-stream",
        "tmp_name" => "/tmp/phpwhglrk",
        "error" => 0,
        "size" => 8713
    )

);
//with proper array getting name is simple:
var_dump($someffdd["file"]["name"]);