用计数器从数组中访问数据


Accessing Data From an Array With a Counter

我有一个像这样的数组结构:

Array
(
    [0] => Array
        (
            [term_id] => 22
            [name] => Aaa Aa
            [slug] => aaa-aa
            [term_group] => 0
            [term_taxonomy_id] => 22
            [taxonomy] => category
            [description] => 
            [parent] => 13
            [count] => 0
            [cat_ID] => 22
            [category_count] => 0
            [category_description] => 
            [cat_name] => Aaa Aa
            [category_nicename] => aaa-aa
            [category_parent] => 13
        )
    [1] => Array
        (
            [term_id] => 11
            [name] => adasdasda
            [slug] => adasdasda
            [term_group] => 0
            [term_taxonomy_id] => 11
            [taxonomy] => category
            [description] => asdsdad
            [parent] => 1
            [count] => 0
            [cat_ID] => 11
            [category_count] => 0
            [category_description] => asdsdad
            [cat_name] => adasdasda
            [category_nicename] => adasdasda
            [category_parent] => 1
        )
)

我想知道如何轻松地循环遍历数据以输出…

例如,我想显示所有的名称、描述和标记。

我不知道如何显示它们…

这就是我所拥有的,它可以工作,但是它抛出了一个无效参数。

    for ($i = 0; $i <= count($data); $i++) {
    foreach($data[$i] as $key => $value){
            echo "KEY: ".$key."<br />'n VALUE: ".$value."<br />'n"; 
        }
    }

不需要使用for循环,foreach就足够了。这样你就不必处理超出边界(未设置索引)的警告。

$array = array(); // <- your data here
foreach ($array as $arr) {
    echo 'Name: ', $arr['name'], '<br />',
         'Description: ', $arr['description'], '<br />',
         'Slug: ', $arr['slug'], '<br />';
}

您得到警告,因为您正在访问$data中不存在的元素。for条件中的边界检查过高,count将返回2,但$data[2]未设置,因此不能在foreach内使用。

代替do (Demo):

for ($i = 0; $i < count($data); $i++) { # $i < count, not $i <= count
    foreach($data[$i] as $key => $value){
        echo "KEY: ".$key."<br />'n VALUE: ".$value."<br />'n"; 
    }
}

当然,使用外部foreach也更容易:

foreach($data as $oneData)
{
    foreach($oneData as $key => $value)
    {
        echo "KEY: $key<br />'n VALUE: $value<br />'n"; 
    }
}

这基本上是一样的,你不需要关心计数器变量。

下一件事是,您需要决定要显示哪些数据。您可以选择性地选择它们,而不是显示所有项:

$displayKeys = array('name', 'description', 'slug');
foreach($data as $oneData)
{
    foreach($displayKeys as $key)
    {
        $value = $oneData[$key];
        echo "KEY: $key<br />'n VALUE: $value<br />'n"; 
    }
}

那么你可能想要标记输出:

$displayKeys = array('name' => 'Name', 'description' => 'Description', 'slug' => 'Slug');
foreach($data as $oneData)
{
    foreach($displayKeys as $key => $label)
    {
        $value = $oneData[$key];
        echo "$label: $value<br />'n"; 
    }
}