我有以下陣列轉換二維數組爲字符串使用PHP
01 03 02 15
05 04 06 10
07 09 08 11
12 14 13 16
我想一個字符串轉換類似如下:
01,05,07,12|03,04,09,14|02,06,08,13|15,10,11,16
誰能告訴我該怎麼做,任何幫助將不勝感激!
我有以下陣列轉換二維數組爲字符串使用PHP
01 03 02 15
05 04 06 10
07 09 08 11
12 14 13 16
我想一個字符串轉換類似如下:
01,05,07,12|03,04,09,14|02,06,08,13|15,10,11,16
誰能告訴我該怎麼做,任何幫助將不勝感激!
我假設你有這樣的數組:
$array = array (
array ('01','03','02','15'),
array ('05','04','06','10'),
array ('07','09','08','11'),
array ('12','14','13','16')
);
在這種情況下,你可以這樣做:
$tmpArr = array();
foreach ($array as $sub) {
$tmpArr[] = implode(',', $sub);
}
$result = implode('|', $tmpArr);
echo $result;
比我的行短一行+1 – davidethell 2012-01-06 12:37:49
你在幾秒鐘內就超越了我+1。 :) – Rolice 2012-01-06 12:37:49
$input = array(
array('01', '02', '03', '04'),
array('11', '12', '13', '14'),
array('21', '22', '23', '24'),
array('31', '32', '33', '34'),
);
$newArray = array();
foreach($input as $rowIndex => $row) {
foreach($row as $key => $val) {
if(!$newArray[$key]) {
$newArray[$key] = array();
}
$newArray[$key][$rowIndex] = $val;
}
}
$strRows = array();
foreach($newArray as $key => $row) {
$strRows[$key] = join(',', $row);
}
$output = join('|', $strRows);
+1 - 到目前爲止唯一的解決方案,實際上提供了OP所要求的輸出......所有其他人都需要首先轉置陣列。 – 2012-01-06 13:18:34
鑑於你的數組作爲$ myArray,像這樣:
$newArray = array();
foreach ($myArray as $row) {
$rowValue = implode(',', $row);
$newArray[] = $rowValue;
}
$finalString = implode('|', $newArray);
$input = array (
array ('01','03','02','15'),
array ('05','04','06','10'),
array ('07','09','08','11'),
array ('12','14','13','16'),
);
echo implode('|', array_map('implode', $input, array_fill(0, count($input), ',')));
整潔....我一直在看封閉的array_reduce()解決方案,但這是一個更清潔。 – 2012-01-06 12:58:45
查看到目前爲止提出的解決方案,只有一個實際生成OP請求的正確輸出。
所以,從salathe的整齊轉換無恥竊取,但有一個轉置,以提供正確的結果:
$input = array (
array ('01','03','02','15'),
array ('05','04','06','10'),
array ('07','09','08','11'),
array ('12','14','13','16'),
);
function transpose($array) {
array_unshift($array, null);
return call_user_func_array('array_map', $array);
}
$transposed = transpose($input);
echo implode('|', array_map('implode', $transposed, array_fill(0, count($transposed), ',')));
是這樣 陣列([0]數組( [0] 01 [1] 03 [ 2] 02 [3] 15) )?? – Arfeen 2012-01-06 12:32:34
但是,在這裏的所有答案(包括接受的答案)中,實際上沒有給出OP要求的實際輸出......除了Rudolph Gottesheim。 – 2012-01-06 13:17:40