2011-11-11 40 views
0

上強調,這是我目前的陣列,其保持第一字符值從如何搶前一個字我陣列輸出中

Array ([n] => Array ([0] => name_john) [a] => Array ([0] => age_30)) 

foreach ($queryArray as $key) { 
    $inArray[$key[0]][] = $key; 
} 

問:我如何下劃線搶前一個字,改變陣列像

Array 
(
    [name] => Array 
     (
      [0] => name_john 
     ) 

    [age] => Array 
     (
      [0] => age_30 
     ) 

) 
+1

你在哪裏得到的數組裏面?如果可能的話,你應該解決實際的問題,並創建一個適當的結構陣列。 –

回答

3

解析出下劃線之前的字,使用爆炸:

// $key = name_john 
$split_key = explode('_',$key); 
// $split_key[0] equals name 
1
$pieces = explode("_", $key); 
echo $pieces[0]; 
1
$inArray[$key[0]][] = substr($key, 0, strpos($key, '_')); 

但是,如果你使用「key」作爲assoc的數組。指數,像

Array ([n] => Array (["name"] => john) [a] => Array (["age"] => 30)) 

然後你可以

foreach ($queryArray as $subArr) { 
    foreach($subArr as $subkey => $val){ 
     $inArray[$subkey][] = $val; 
    } 
} 

,你應該得到像

Array 
(
    ["name"] => "john" 

    ["age"] => 30 
) 

壽它不是「理想」輸出一個數組,可能是更清潔和更容易使用看起來你在做什麼。

1

工作實施例:codepad here

<?php 

$array = array('n' => Array(0 => 'name_john'), 'a' => Array('0' => 'age_30')); 

foreach ($array as &$value) { 
    foreach ($value as $oldkey => $name) { 
     $chunks = explode('_', $name); 
     $newkey = $chunks[0]; 
     // see https://stackoverflow.com/questions/240660/in-php-how-do-you-change-the-key-of-an-array-element 
     $value[$newkey] = $value[$oldkey]; 
     unset($value[$oldkey]); 
    } 
} 
var_dump($array); 

輸出:

array 
    'n' => 
    array 
     'name' => string 'name_john' (length=9) 
    'a' => & 
    array 
     'age' => string 'age_30' (length=6) 
+0

如果有兩個'name_'示例數組''array_ array('n'=> Array(0 =>'name_john',1 =>'name_peter'),'' a'=> Array('0'=>'age_30'));' – MRA

0

儘量把這個你foreach語句:)

$string = strstr($key, '_', true); 
echo $string; // prints ewverything before the '_'