2016-06-12 74 views
0

希望我已经正确地提出了这个问题。 我有一个多维数组,如下所示,这已经预先按[types]排序,现在我需要遍历它,找到匹配类型,如果找到了,我需要输出以下内容(对于短输入,但不能输入在话真的解释当多维数组中的键值匹配时,求和所有键的所有值

Array 
(
[0] => Array 
    (
     [image] => 479/beatniq/devt4147205-7.jpg 
     [types] => BE1 
     [sizes] => 43 
     [prices] => 12000000 
     [quantity] => 1 
     [aspect] => South 
     [floor] => 16 
     [beds] => 1 
    ) 

[1] => Array 
    (
     [image] => 479/beatniq/devt4147205-7.jpg 
     [types] => BE1 
     [sizes] => 44 
     [prices] => 12003060 
     [quantity] => 1 
     [aspect] => South 
     [floor] => 16 
     [beds] => 1 
    ) 

[2] => Array 
    (
     [image] => 479/beatniq/devt4147205-7.jpg 
     [types] => BE1 
     [sizes] => 48 
     [prices] => 12009800 
     [quantity] => 1 
     [aspect] => North 
     [floor] => 24 
     [beds] => 1 
    ) 

[3] => Array 
    (
     [image] => 479/beatniq/devt4147205-4.jpg 
     [types] => BE2 
     [sizes] => 79 
     [prices] => 22046511 
     [quantity] => 1 
     [aspect] => East 
     [floor] => 32 
     [beds] => 2 
    ) 

[4] => Array 
    (
     [image] => 479/beatniq/devt4147205-1.jpg 
     [types] => BE2P 
     [sizes] => 108 
     [prices] => 30139534 
     [quantity] => 1 
     [aspect] => South 
     [floor] => 39 
     [beds] => 2 
    ) 

[5] => Array 
    (
     [image] => 479/beatniq/devt4147205-1.jpg 
     [types] => BE2P 
     [sizes] => 110 
     [prices] => 30141534 
     [quantity] => 1 
     [aspect] => South 
     [floor] => 34 
     [beds] => 2 
    ) 

) 

输出:

Type of property  Sizes  Price range     Availability 
BE1     43-44m2  ฿12,000,000-฿12,009,800  3 
BE2     79m2   ฿22,046,511     1 
BE2P     108-110m2  ฿30,139,534-฿30,141,534  2 

我知道这下面是不会实现的结果,但它是我到目前为止输出数组分别,在那里我排序需要群组 -

if(! empty ($dev_units_available)) { 
     $arraySize = count($dev_units_available); 
     for($i=0;$i<$arraySize;$i++){ ?> 
     <tr class="highlight"> 
      <td style="width:60px;"> 
      <a href="/a-link/"><img src="<?php echo $dev_units_available[$i][image];?>" width="100" class="masthead" alt="a building"></a> 
      </td> 
      <td><?php echo $dev_units_available[$i][types];?></td> 
      <td><?php echo $dev_units_available[$i][sizes].' '.$areaunit;?></td> 
      <td><?php echo get_custom_price($dev_units_available[$i][prices]);?></td> 
      <td><strong><?php echo $dev_units_available[$i][quantity];?> available</strong></td> 
      <td class="int" style="width:120px;"><div class="button"><a href="#" onclick="toggleRow(<?php echo $i;?>);return false;" class="add"><strong>More details</strong></a></div></td> 
     </tr> 
     <tr id=row<?php echo $i;?> style='height:0px;'> 
      <td style='padding:0;border:none;'> 
      <div id="div<?php echo $i;?>" style="display:none;">Hidden row content goes here</div> 
      </td> 
     </tr> 

    } 

    } 

非常感谢,玛丽萨

+0

我不知道你想什么来真正实现,但大致说来我会创建一个新的数组,其中每个键是一个类型,该值是另一个数组,例如尺寸,PRICE_RANGE和可用性,并计算循环访问原始数组时的值。然后你只要显示它 – niklon

+0

感谢您抽出时间回复,我有点猜测我没有正确解释,但有时难以从泰语的大脑转换为英语。 基本上,我有一个新的发展,由400个单位,40个楼层等组成。 但我真的在如何检查类型匹配阵列,(BREAK)算在一起这个房间类型值,然后再次启动循环,依此类推。 后来,如果我能找到对此的帮助,希望我可以将输出分组到一个onclick事件以向下滑动每个房间类型。 – Malisa

+0

对我来说,看起来你不会看到这个代码的任何地方。从头开始,用一个帮助数组做一些事情,在一个单独的代码中获取确切的值,然后在代码中显示东西只是回声。 – niklon

回答

0

Manged了大量的试验和错误后整理出来..毫无疑问,还有一个更简单的方法,但这个工程。

就必须由[类型]

Array 
(
    [0] => Array 
     (
     [image] => /479/beatniq/devt4147205-7.jpg 
     [types] => BE1 
     [sizes] => 45 
     [prices] => 12000000 
     [quantity] => 1 
     [aspect] => 
     [floor] => 23 
     [beds] => 1 
    ) 

[1] => Array 
    (
     [image] => /479/beatniq/devt4147205-2.jpg 
     [types] => BE2 
     [sizes] => 53 
     [prices] => 15667000 
     [quantity] => 1 
     [aspect] => 
     [floor] => 45 
     [beds] => 2 
    ) 

[2] => Array 
    (
     [image] => /479/beatniq/devt4147205-7.jpg 
     [types] => BE1 
     [sizes] => 48 
     [prices] => 13890000 
     [quantity] => 1 
     [aspect] => 
     [floor] => 56 
     [beds] => 1 
    ) 

) 

用下面的函数原数组排序:

function arraySort($input,$sortkey){ 
    foreach ($input as $key=>$val) $output[$val[$sortkey]][]=$val; 
    return $output; 
} 

$dev_units_available = arraySort($dev_units_available,'types'); 

这给了我这个数组:

Array 
(
    [BE1] => Array 
     (
      [0] => Array 
       (
       [image] =>/479/beatniq/devt4147205-7.jpg 
       [types] => BE1 
       [sizes] => 45 
       [prices] => 12000000 
       [quantity] => 1 
       [aspect] => 
       [floor] => 23 
       [beds] => 1 
      ) 

     [1] => Array 
      (
       [image] =>/479/beatniq/devt4147205-7.jpg 
       [types] => BE1 
       [sizes] => 48 
       [prices] => 13890000 
       [quantity] => 1 
       [aspect] => 
       [floor] => 56 
       [beds] => 1 
      ) 

    ) 

[BE2] => Array 
    (
     [0] => Array 
      (
       [image] => /479/beatniq/devt4147205-2.jpg 
       [types] => BE2 
       [sizes] => 53 
       [prices] => 15667000 
       [quantity] => 1 
       [aspect] => 
       [floor] => 45 
       [beds] => 2 
      ) 

    ) 

) 

,然后输出通过改变原来的循环到这个。

foreach($dev_units_available as $item){ 
    $arraySize = count($item); 
    for($i=0;$i<$arraySize;$i++){ 
     HTML HERE 
    } 
}