2014-09-03 42 views
1

我有几个数组存储在一个变量中。我的变量保存这些数组:显示第一个和第三个值foreach数组

Array ([0] => firstname [1] => lastname [2] => email [3] => phone) 
Array ([0] => Benny [1] => Mose [2] => [email protected] [3] => 12345678) 
Array ([0] => Luke [1] => Skywalker [2] => [email protected] [3] => 10000000) 
Array ([0] => Master [1] => Yoda [2] => [email protected] [3] => 13370002) 
Array ([0] => Ben [1] => Kenobi [2] => [email protected] [3] => 13370004) 
Array ([0] => Darth [1] => Bandon [2] => [email protected] [3] => 55554444) 
Array ([0] => C-3PO [1] => Robot [2] => [email protected] [3] => 33339999) 
Array ([0] => R2D2 [1] => Robot [2] => [email protected] [3] => 44447777) 
Array ([0] => Han [1] => Solo [2] => [email protected] [3] => 99998888) 
Array ([0] => Jar jar [1] => Binks [2] => [email protected] [3] => 111112222) 

我想显示每个数组的第一个[0]和第三[2]值。

我能够通过显示每个数组的第一个值:

$CSVfp = fopen("csv-list.csv", "r"); 
if($CSVfp !== FALSE) { 
while(! feof($CSVfp)) { 
    $data = fgetcsv($CSVfp); 

echo '<hr>'; 
foreach($data as $arr) 
{ 
    echo $data[0].' '.$data[1].', '.$data[2].'<br>'; // first element 

} 

} 
} 
fclose($CSVfp); 

但我无法弄清楚如何同时显示第一和第三值。

回答

1

一个简单的foreach循环应该做的伎俩:

foreach($data as $arr) 
{ 
    echo $arr[0]."\r\n"; // first element 
    echo $arr[2]."\r\n"; // third element. 
} 

在foreach循环,你把每一个元素(在你的情况,我已经是一个数组),并可以使用它作为不管它是什么。

Array ([0] => firstname [1] => lastname [2] => email [3] => phone) 

所以你显示的元素为正常:

因此,在第一循环中,$arr可以为可见。

你可以做第二个foreach循环,如果你想在几十个元素的数组,以显示每第二个元素,或搜索特定元素或什么:

foreach($data as $arr) 
{ 
    foreach($arr as $key=>$val) 
    { 
     echo ($key=='someElement')?$val:""; 
    } 
} 

编辑:基于您的评论中,变量实际上并不包含你在问题中显示的(所有)数组,而是一次仅包含其中的一个。

此基础上,你可以简单地访问数组中的每个元素:

echo $data[0]."\r\n"; // first element 
echo $data[2]."\r\n"; // third element. 

编辑2:

$CSVfp = fopen("csv-list.csv", "r"); 
if($CSVfp !== FALSE) 
{ 
    while(! feof($CSVfp)) 
    { 
     $data = fgetcsv($CSVfp); 
     echo '<hr>'; 
     echo $data[0].' '.$data[1].', '.$data[2].'<br>'; // first element 
    } 
} 
fclose($CSVfp); 

你不需要在foreach的话 - 你已经访问每个行作为单个简单数组。

编辑3:

您可以使用一个简单的计数器和模函数:

$i=0; 
$CSVfp = fopen("csv-list.csv", "r"); 
if($CSVfp !== FALSE) 
{ 
    while(! feof($CSVfp)) 
    { 
     $i++; 
     $data = fgetcsv($CSVfp); 
     if($i%3==0) 
     { 
      echo '<hr>'; 
      echo $data[0].' '.$data[1].', '.$data[2].'<br>'; // first element 
     } 
    } 
} 
fclose($CSVfp); 
+0

按照你的意见,我使用的是简单的foreach循环尝试。但它显示每个值的第一个和第三个字符。例如。 firstname = fr等等。 – 2014-09-03 10:29:55

+1

@KarstenTietje请参阅编辑。 – Fluffeh 2014-09-03 10:36:42

+0

谢谢你是对的。但是现在每个条目都显示4次。例如。名字名字名字名字 - 那真的没有意义。 – 2014-09-03 10:42:05

相关问题