解析数组并选择相同的信息

时间:2011-01-22 00:08:10

标签: loops multidimensional-array

嘿是我的肥皂回应中的数组返回示例(我无法控制webservice)

[Names]
 [Name]
  [ID] => GH01
  [First] => Greg
  [Last] => Hobb
  [DateAvailable] =>12.04.2011
  [Contactable] => true

 [Name]      

  [ID] => JM01
  [First] => James
  [Last] => Murr;
  [DatesAvailable] => 12.04.2011
  [Contactable] => true

 [Name]
  [ID] => GH01
  [First] => Greg
  [Last] => Hobb
  [DateAvailable] => 13.04.2011
  [Contactable] => true

 [Name]
  [ID] => JM01
  [First] => James
  [Last] => Murr;
  [DatesAvailable] => 13.04.2011
  [Contactable] => true

我无法形成一个循环,它将每个名称和组合在一起的可用日期。感觉很蠢。看起来很简单,但我无法理解它。也许你的一位公式专家可以让我朝着正确的方向前进。

获取对象的代码如下:

$ result->名称;

我想如何展示:

姓名:Greg Hobb 日期:2011年4月12日 - 2011年4月13日

希望有意义,我想知道如何展示它们,而不是以正确的方式抓住它们。

1 个答案:

答案 0 :(得分:1)

您实现阵列/数据的方式似乎是不必要的并且过于复杂。除了日期之外,您有两个相同的数组元素,因此您可以使用两个DatesAvailable(开始日期和结束日期)并将它们放在一起以使您的实际DatesAvailble。在您的Name数组中,只需放一个startDate和endDate字段。这样,每个元素都是一个不同的个体,可以保存您需要的所有数据。

以下是一些真正的不稳定代码(快速启动),你可以如何处理这个代码,并创建一个新的数组,如上所述:

$newArray; $flag; $num;
for($i = 0; $i < count($Names); $i++)
{
    $flag = false;
    for($c = 0; $c < count($newArray); $c++)
    {
         if($names[$i][$ID] == $newArray[$c][$ID])
         {
              $newArray[$c][$endDate] = $Names[$i][$datesAvailable];
              $flag = true;
              break;
         }
     }
    if(!$flag)
    {
         //create a new element in $newArray. set ur ID, contact fields, etc.
         $newArray[count($newArray)][$startDate] = $names[$i][$datesAvailable];
     }
 }

希望这有任何帮助&gt;&lt;