我有一个像这样的数组结构:
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
)
)
我想知道如何轻松地循环输出数据......
例如,我想显示所有名称,描述和slu ..
我无法弄清楚如何全部显示它们......
这就是我所拥有的,它有点有用,但是这是一种无效的争论。
for ($i = 0; $i <= count($data); $i++) {
foreach($data[$i] as $key => $value){
echo "KEY: ".$key."<br />\n VALUE: ".$value."<br />\n";
}
}
答案 0 :(得分:1)
无需使用for
循环,foreach
就足够了。这样您就不必处理超出边界(索引未设置)警告。
$array = array(); // <- your data here
foreach ($array as $arr) {
echo 'Name: ', $arr['name'], '<br />',
'Description: ', $arr['description'], '<br />',
'Slug: ', $arr['slug'], '<br />';
}
答案 1 :(得分:1)
您收到警告是因为您正在访问不存在的$data
元素。 for
条件中的边界检查太高,count
将返回2,但$data[2]
未设置,因此无法在foreach
内使用。
而是做(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";
}
}