0

私はこれに少し困惑しています。例を挙げて質問するのが一番だと思います。だから私はこの配列を持っています:

$RN[0]['Brand']  = "AC"
      ['Number'] = "1234"
      ['Note']   = "12 Volt"

$RN[1]['Brand']  = "AC"
      ['Number'] = "1235"
      ['Note']   = "12 Volt"

$RN[2]['Brand']  = "Ford"
      ['Number'] = "7722"
      ['Note']   = "12 Volt"

$RN[3]['Brand']  = "AC"
      ['Number'] = "1236"
      ['Note']   = ""

そして、私がやりたいのは、Note AND Brandに基づいて要素を組み合わせることです。したがって、グループ化される資格を得るには、両方が同一である必要があります。したがって、出力は次のようになります。

$RN[0]['Brand']   = "AC"
      ['Numbers'] = array( "1234", "1235" )
      ['Note']    = "12 Volt"

$RN[1]['Brand']   = "Ford"
      ['Numbers'] = array( "7722" )
      ['Note']    = "12 Volt"

$RN[2]['Brand']   = "AC"
      ['Numbers'] = array( "1236" )
      ['Note']    = ""

私を正しい方向に押してくれてありがとうDaneSoul。興味のある人のために、これが最終的なコードです-私は彼のコードから始めて、私の状況でそれが機能するようにいくつかの変更を加えました:

$RN_new = array();
$i = 0;
$gotonext = 0;
foreach( $RN as $R ) {
    if ( isset( $RN_new ) && count( $RN_new ) > 0 ) {
        foreach( $RN_new as $key=>$RN_test ) {
            if ( $R['Brand'] == $RN_test['Brand'] && $R['Note'] == $RN_test['Note'] ) {
                $RN_new[$key]['Numbers'][] = $R['Number'];
                $gotonext = 1;
                }
            }
        }
    if ( $gotonext == 0 ) {
        $RN_new[$i]['Brand'] = $R['Brand'];
        $RN_new[$i]['Numbers'][] = $R['Number'];
        $RN_new[$i]['Note'] = $R['Note'];
        }
    $i++;
    $gotonext = 0;
    }
4

1 に答える 1

1
<?php
$RN_new = array();
$i = 0;

foreach($RN as $RN_current){
  if($RN_current['Brand'] !== $RN_new[0]['Brand'] && 
     $RN_current['Note'] !== $RN_new[0]['Note']
  ){
     $RN_new[$i] = array('Brand' => $RN_current['Brand'], 
                         'Number' => array ($RN_current['Number']),
                         'Note' => $RN_current['Note']
                   );
  }
  else{
      $index = $i-1;
      $RN_new[$index]['Number'][] = $RN_current['Number']; 
  }
  $i++;
}
?>
于 2012-06-19T21:56:44.177 に答える