0

我知道之前已经发布了许多极其相似foreach的问题,但我一直无法找到答案。我敢肯定它在同名问题的汤中的某个地方。

我在脚本中使用这个 ESRI shapefile 阅读器类,我有这个功能:

function csv_generate($shapefile){
    $startTime=microtime(1);
    $imported=new ShapeFile($shapefile,array('noparts'=>false));
    $names=explode('/',$shapefile);
    $output=fopen('output/'.$names[count($names)-1].'.csv','w');
    while($object=$imported->getNext()){
        $data=$object->getDbfData();
        file_put_contents('output/'.$names[count($names)-1].'.txt',implode("\t",array_keys($data)));
        $shape=$object->getShpData();
        $shapes=array();
/*LINE 246*/    foreach($shape['parts'] as $poly){
            $points=array();
            foreach($poly['points'] as $point){
                $temp=round_away($point['x']).','.round_away($point['y']);
                if(isset($points[count($points)-1])&&$points[count($points)-1]!==$temp)$points[]=$temp;
            }
            $shapes[]=implode(';',$points);
        }
/*LINE 254*/    fputs($output,implode("\t",$data)."\t".$shape['numparts']."\t".implode("\t",$shapes)."\r\n"); 
    }
    fclose($output);
}

运行此代码会产生:

Notice: Undefined offset: "parts" in [...] on line 246
Warning: Invalid argument supplied for foreach() in [...] on line 246
Notice: Undefined offset: "numparts" in [...] on line 254

好吧,那我一定是把钥匙弄错了。很容易修复,对吧?不。当然不是。

var_dumping的结果$shape是:

array(7) { [...] ["numparts"]=> int(1) [...] ["parts"]=> array(1) { [0]=> array(1) { ["points"]=> array(175) { [0]=> array(2) { ["x"]=> [...]

我尝试将foreach循环重写为:

foreach($shape as $key=>$value){
    if($key=='parts'){
        [...]

我已经尝试array_values通过数字键在元素上使用和运行循环。

我尝试将所有变量重命名为完全随机的字符串。

可能会发生什么?

4

0 回答 0