我有几个存储在变量中的数组。我的变量包含这些数组:
Array ( [0] => firstname [1] => lastname [2] => email [3] => phone )
Array ( [0] => Benny [1] => Mose [2] => benny@mose.dk [3] => 12345678 )
Array ( [0] => Luke [1] => Skywalker [2] => luke@theforce.dk [3] => 10000000 )
Array ( [0] => Master [1] => Yoda [2] => yoda@theforce.dk [3] => 13370002 )
Array ( [0] => Ben [1] => Kenobi [2] => ben@theforce.dk [3] => 13370004 )
Array ( [0] => Darth [1] => Bandon [2] => darth@sith.dk [3] => 55554444 )
Array ( [0] => C-3PO [1] => Robot [2] => c-3po@theforce.dk [3] => 33339999 )
Array ( [0] => R2D2 [1] => Robot [2] => r2d2@theforce.dk [3] => 44447777 )
Array ( [0] => Han [1] => Solo [2] => han@frozen4life.dk [3] => 99998888 )
Array ( [0] => Jar jar [1] => Binks [2] => jarjar@theforce.dk [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);
但我无法弄清楚如何显示第一个和第三个值。
答案 0 :(得分:1)
一个简单的foreach循环应该可以解决这个问题:
foreach($data as $arr)
{
echo $arr[0]."\r\n"; // first element
echo $arr[2]."\r\n"; // third element.
}
在foreach循环中,你获取每个元素(在你的情况下,我已经是一个数组),并可以使用它作为它是什么。
所以在第一个循环中,$arr
可以看作:
Array ( [0] => firstname [1] => lastname [2] => email [3] => phone )
因此您可以正常显示元素。
如果要在数组中显示包含数十个元素的每个第二个元素,或者搜索特定元素或其他任何元素,则可以执行第二个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);