【问题标题】:I have an array with two fields value and I want to echo separatly我有一个包含两个字段值的数组,我想分别回显
【发布时间】:2011-05-01 23:16:02
【问题描述】:

我在数组变量中有 id 和 name 字段,我如何在闲置的 html 中分别回显它们。

foreach($iterator as $key=>$value)

变量 $value 有 id 和 name 字段我想分别回显它们,例如

<div>id here</div>   <div>name here</div>

我试过了

    $hier = new hier;
    $iterator = $hier->Pathroot($name);
    try {

        foreach($iterator as $key=>$value)
            {

    echo '<div>' . $value['id'] . '</div><div>' . $value['name'] . '</div>'

    }

我使用了 recursiveiterator 函数,因为我不再使用旧的 sql 模型,因此我不必再使用 recursiveiterator。

Var_dump

array(1) { [0]=> array(2) { ["name"]=> string(14) "Coloso" ["id"]=> string(1) "1" } } 

【问题讨论】:

  • 那么你已经尝试了什么?
  • 对于@Oli 的评论,你能定义$iterator 数组吗?是数组的数组,还是具有特定格式值的数组?
  • 变量 $value 有 id 和 name 字段 这是否意味着你有一个多维数组?我想你绝对应该阅读php.net/manual/en/language.types.array.php
  • @OLi 我已经尝试了上面的内容,它只打印名称字段的第一个字符,并且 id 但 id 即将到来我猜是从最后一个 div 迭代。这意味着只有名称字段在回显名称和 id 值.....我得到
    '.$value['id'].'
    它仍然会返回名称字段的第一个字符以及 id。
  • @thomas 和 @felix 它是一个多维数组我可能应该将它引用到 $iterator[0]['id'] 我认为它是一个多维数组,如 array(1) { [0] => array(2) { ["name"]=> string(14) "Coloso" ["id"]=> string(1) "1" } }

标签: php


【解决方案1】:

你有没有尝试过显而易见的:

echo "<div>$key</div><div>$value</div>";

【讨论】:

  • 值中的Dragon是我要回显的两个值所在的位置。
【解决方案2】:

迭代器包含一个数组,如下所示:

array(
  // counter => array(id, name)
  0 => array("1", "john"),
  1 => array("2", "jane")
  etc...
)

在每个 foreach 循环中,迭代器在内部增加其计数器,以便返回下一个子数组,例如:

foreach ($iterator as $index => $value) {
    // loop 1: index=0; value=array(id=1, name=john)
    // loop 2: index=1; value=array(id=2, name=jane)
    // loop 3: index=2; counter > count(array) - break
}

所以如果你使用$value,你应该得到你需要的结果。

【讨论】:

  • 我认为它是一个多维数组,例如 array(1) { [0]=> array(2) { ["name"]=> string(14) "Coloso" ["id"] => 字符串(1) "1" } }
  • 我没有使用过这些 SPL 类(如果你能理解 php.net/~helly/php/ext/spl 这可能对你有帮助的话)——但你需要将 RecursiveArrayIterator 包装在 RecursiveIteratorIterator 中吗?看起来你可以从 ArrayIterator 得到你想要的。
  • 另外,如果你这样做,你可以按照 Dagon 的建议使用 $key 和 $value。当前 $key 和 $value 的 var_dump 有什么作用?
  • 你能解释一下像 array(1) { [0]=> array(2) { ["name"]=> string(14) "Coloso" ["id"] 这样的 var 转储数组吗=> 字符串(1) "1" } }
  • 这是一个没有递归迭代器函数的var转储我把它拿出来
【解决方案3】:
<div><?php echo $value['id'] ?></div>    <div><?php echo $value['name'] ?></div>

【讨论】:

  • 这是一个多维数组我猜这是 var_dump 我认为它是一个多维数组,例如 array(1) { [0]=> array(2) { ["name"]=> string (14) "Coloso" ["id"]=> 字符串(1) "1" } }
  • @fello:当然,但是$value 已经是迭代变量了。
【解决方案4】:

您需要确定您是在处理关联数组还是非关联数组。

关联数组将键映射到值。在您的代码中,如果 $value 是关联数组:

echo '&lt;div&gt;' . $value['id'] . '&lt;/div&gt;&lt;div&gt;' . $value['name'] . '&lt;/div&gt;';

会工作的! (顺便说一下,您的代码中缺少结尾的分号,但我猜这只是一个粘贴错误)。

如果不是,$value 只是一个非关联数组,因此您需要创建另一个循环来打印值:

foreach($iterator as $key=>$value){
    foreach($value as $val){
        echo '<div>'.$val.'</div>';
    }
}

您的语法表明您正在正在处理关联数组,但又一次;你的代码可以工作。

作为旁注,以下两行代码是等价的(假设 $value 又是一个关联数组):

foreach($iterator as $key=>$value) echo $value['name'];
foreach($iterator as $value) echo $value['name'];

【讨论】:

  • foreach($iterator as $value) echo $value['name'];这条线成功了,它打印了两者的值..现在这是否意味着它是一个关联数组?我取了 $key 的值,只留下了 $value ,现在它起作用了。谢谢
  • 如果它正确打印了两个值,$value 是一个关联数组,但 'id' 值似乎位于 'name' 键中。无论如何,很高兴它成功了。
猜你喜欢
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 2022-11-17
相关资源
最近更新 更多