2017-07-08 95 views
-2

简单数组给出错误。警告线号19上的非法字符串偏移'文件'

警告非法串上线人数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; 
} 

?> 

尝试过各种组合,但没有什么是免费的错误。我想输出名称值

+0

它将无法正常工作,因为您的值实际上是数组的输出。 –

+0

@ L.Herrera是的,它是print_r的输出 – hareom

+0

@hareom你可以添加你的代码作为一个snipit吗?这将是您工具栏上的第七个wizzywig工具。 –

回答

0

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

如果你不能你$someffdd源更改为PHP可以解析使用json_encode()serialize()var_export(),您可以使用正则表达式匹配字符串的name部分,或使用一些strpos()/substr()巫术:

$matches = []; 
preg_match("/\[name\] => (.*)\n/", $someffdd, $matches); 
$name = $matches[1]; 

$position = strpos($someffdd, '[name] => ') + 10; 
$section = substr($someffdd, $position); 
$eol = strpos($section, "\n"); 
$name = substr($section, 0, $eol); 
+0

thanks.can我想看看我的代码是什么产生,所以我使用的是打印)r。无论如何,我可以生成完全相同的print_r是添加不必要的数组 – hareom

+0

如果你想与你的输出一起阅读,我建议输出JSON。这是相当人类可读的,可以通过PHP解析:'echo json_encode($ my_array);' - >'$ my_array = json_decode('json string');' – rickdenhaan

+0

thx ............ 。 – hareom

0

不知道这个数组来自哪里,但是当数组具有正确的字符串值时,只需调用父键/子键的键值即可正常工作: *您的当前状态的数组未正确配置。

$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"]); 
相关问题