2017-11-27 13 views
-4

私は配列ベースのMySqlデータベースを持っています。 これは配列です。要素配列PHPベースの第1文字値をグループ化する

[ 
    0 => [ 
    'id' => '1997' 
    'lokasi_terakhir' => 'YA4121' 
    ] 
    1 => [ 
    'id' => '1998' 
    'lokasi_terakhir' => 'PL2115' 
    ] 
    2 => [ 
    'id' => '1999' 
    'lokasi_terakhir' => 'PL4111' 
    ] 
] 

私は最初の文字でグループ化された要素lokasi_terakhirを取得できますか?何が最善の方法ですか?

これが目標です:

[ 
    "Y" => 1, 
    "P" => 2 
] 

グループにすることができます。このように、これらの項目

+1

SQLデータベースにある場合は、それをグループ化してみましょうえ? – kchason

+0

いくつかのコードを書く:結果のために新しい配列を作成し、foreachを使用してDB配列をループする。その後、配列[INDEX] ['lokasi_terakhir']の値を抽出し、最初の文字を取って、結果配列[FIRSTLETTER] + 1をインクリメントします。 – Nic3500

+0

@FadlyDzilあなたの質問はより多くの下垂を引きつけるかもしれません。あなたの質問にコーディングの試みが含まれています。あなたの質問に、投稿する前に試したことを追加してください。 – mickmackusa

答えて

1

ここでは、2つの洗練された方法です。あなたが選んだのはあなたの個人的な好みになります(より良い方法はありません)。

最初は$result宣言のlokasi_terakhir値の最初の文字をキーとして宣言して配列を繰り返しています。キーがまだ出力配列に存在しない場合は、1と宣言または設定する必要があります。インスタンス化された後、それは増分することができます - 私は "プリインクリメント"を使用しています。

第2の方法は、最初に各サブアレイのlokasi_terakhir値の最初の文字を使用して新しい配列をマップし、各文字の各出現をカウントします。

Demonstrations Link

方法#1:(foreachの)

foreach($array as $item){ 
    if(!isset($result[$item['lokasi_terakhir'][0]])){ 
     $result[$item['lokasi_terakhir'][0]]=1; // instantiate 
    }else{ 
     ++$result[$item['lokasi_terakhir'][0]]; // increment 
    } 
} 
var_export($result); 

方法#2:

var_export(array_count_values(array_map(function($a){return $a['lokasi_terakhir'][0];},$array))); 
// generate array of single-character elements, then count occurrences 

(機能)出力:

array (
    'Y' => 1, 
    'P' => 2, 
) 
(いずれかから)
1

を教えてください:

$array = [ 
     0 => [ 
     'id' => '1997', 
     'lokasi_terakhir' => 'YA4121' 
     ], 
     1 => [ 
     'id' => '1998', 
     'lokasi_terakhir' => 'PL2115' 
     ], 
     2 => [ 
     'id' => '1999', 
     'lokasi_terakhir' => 'PL4111' 
     ] 
    ]; 

$result = array(); 
foreach($array as $item) { 
    $char = substr($item['lokasi_terakhir'], 0, 1); 
    if(!isset($result[$char])) { 
    $result[$char] = array(); 
    } 

    $result[$char][] = $item; 
} 
0
<?php 
$array=[ 
    0 => [ 
     'id' => '1997', 
    'lokasi_terakhir' => 'YA4121' 
    ], 
    1 => [ 
    'id' => '1998', 
    'lokasi_terakhir' => 'PL2115' 
    ], 
    2 => [ 
    'id' => '1999', 
    'lokasi_terakhir' => 'PL4111' 
    ] 
]; 

foreach($array as $row){ 
    $newArray[]=$row['lokasi_terakhir'][0]; 

} 

print_r(array_flip(array_unique($newArray))); 

このコードは、フィールドの最初の文字を取得しlokasi_terakhirユニークな値を取得して重複を避け、配列を反転させて結果を得る 欲しいです。

出力はこれです:

Array ([Y] => 0 [P] => 1) 
関連する問題