【问题标题】:count of array elements in phpphp中数组元素的计数
【发布时间】:2014-06-15 18:00:55
【问题描述】:

我试图在数组中显示没有元素,但是当我试图打印计数时它显示 1

<?php
if(!$xml=simplexml_load_file('sunglasses.xml')){
trigger_error('Error reading XML file',E_USER_ERROR);
}
$array1=array();
foreach($xml as $syn)
{
for($i=0;$i<count($syn->productId);$i++)
{
$array1=$syn->productId;

}

}
echo count($array1, COUNT_RECURSIVE);
?>

xml 文件中有 10 个产品。所以我希望计数为 10,但它的打印只有 1。 请告诉我代码有什么问题。

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    你的代码格式很糟糕。

    是的,xml 中可能有 10 个元素,但 $array1 中只有一个元素,因为只有最后一个分配存在。尽管您将其声明为数组,但您从未告诉 $array1 将值推送到数组中。如果没有通过array_push()[] 语法明确调用,则分配过程= 不会推送值。

    $array1[] = $syn->productId;
    

    应该可以。

    您至少应该测试过结果。 var_dump()'ing $array1 只会为您提供一个值的结果 - 最后一个值,您将能够理解出现问题。

    【讨论】:

      【解决方案2】:

      以下代码更改将解决您的问题。

        <?php
          if(!$xml=simplexml_load_file('sunglasses.xml')){
          trigger_error('Error reading XML file',E_USER_ERROR);
          }
          $array1=array();
          foreach($xml as $syn)
          {
          for($i=0;$i<count($syn->productId);$i++)
          {
         // here need to add the result in array. not to assign value directly to array object.
          $array1[] = $syn->productId;
      
          }
      
          }
          echo count($array1, COUNT_RECURSIVE);
          ?>
      

      【讨论】:

      • 你至少应该解释一下为什么它会按你的方式工作:)
      • @RoyalBg 感谢您的建议。已更新答案。
      猜你喜欢
      • 2012-11-04
      • 2011-06-22
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 2011-05-22
      相关资源
      最近更新 更多