2016-12-19 51 views
1

我想將數組分成兩個單獨的數組。舉例來說,如果我有這樣的如何將數組切分爲兩個

Array([0]=>Hello[1]=>I'm[2]=>Cam) 

數組我想把它分成兩列,並添加另一個字符串

Array1([0]=>Hello[1]=>There,) 
Array2([0]=>I'm[1]=>Cam) 

然後最後加上兩人在一起

Array([0]=>Hello[1]=>There,[2]=>I'm[3]=>Cam) 

什麼將是最簡單的方法來做到這一點? 我知道我可以使用數組合並將兩者放在一起,但我不知道如何在某個點將它們分開。

我也這樣做在一個大文件,將不斷地越來越大,所以我不能使用array_chunk()

+2

[在PHP中的任何位置插入新項目在數組中可能的重複](http://stackoverflow.com/questions/3797239/insert-new-item-in-array-on-any-position-in-php ) –

回答

1

看着你最終結果的目標,我認爲更短的方法來獲得您想要的反應是使用array_splice它可以讓你插入到一個數組的中間....

$arrayVarOriginal = array('Hello', 'Im', 'Cam'); 
$arrayVarExtra = array('There'); 
array_splice($arrayVarOriginal, 1, 0, $arrayVarExtra); 

像你想這應該送你回去Array([0]=>Hello[1]=>There,[2]=>Im[3]=>Cam)

以上內容避免了必須拆分數組。

無論其

如果你確實想這樣做硬盤的方式,這裏是你怎麼會......

$arrayVarOriginal = array('Hello', 'Im', 'Cam'); 
$array1stPart = array(arrayVarOriginal[0], 'There'); 
$array2ndPart = array_shift($array1stPart); 
$finalArray = array_merge($array1stPart, $array2ndPart); 

如何? array_shift刪除任何陣列中的第一個項目,所以我們如何得到$array2ndPart ....和$array1stPart更容易,因爲我們可以手動建立一個全新的陣列,並從位於0處的$arrayVarOriginal開始,並添加'有」在我們自己的新位置1

希望幫助:)

array_shiftarray_splicearray_merge是你需要考慮的東西。

0

根據你的問題,這裏一步一步得到你想要的最終輸出。

1)拆分陣列

$arr = array('Hello', 'I\'m', 'Cam'); 
$slice = count($arr) - 1; 

$arr1 = array_slice($arr, 0, -$slice); 
$arr2 = array_slice($arr,1); 

所以,你到這裏來了兩個新的陣列$arr1$arr2

2)添加新的字符串

$arr1[] = "There"; 

3)最後,結合陣列

$arr = array_merge($arr1, $arr2) 

下面的示例輸出,當你print_r$arr

Array 
(
    [0] => Hello 
    [1] => There 
    [2] => I'm 
    [3] => Cam 
) 
+0

如果原始數組長度可變,這將無法正確插入第一個位置 - 例如array('Hello','I \'m','James','Cameron'); ---現在最終的結果將是Hello/There/Im/James而不是Hello/There/Im/James/Cameron ---我在上面提供的答案,兩個解決方案的函數都是可變長度的數組 – mrmrw

+1

我只是給出瞭解決方案的基礎這個問題。但是感謝@ mrmrw。請參閱編輯答案。現在它應該接受任何長度的數組 – weirdo

+0

好的工作!我假設它可以是可變長度,否則OP可以只是手動創建一個新變量,如果它始終是相同的長度...即$ newArray = array($ originalArray [0],'There',$ originalArray [1], $ originalArray [2],$ originalArray [3]); – mrmrw

0

array_slice第二個參數是你想要分割位置。所以你可以通過計算數組的長度動態地做到這一點。

$string = array("Hello","I'm","Cam"); 

$firstArray = array_slice($string ,0,1); 
array_push($firstArray,"There,"); 
$secondArray = array_slice($string ,1,2); 
echo "<pre>"; 
print_r($firstArray); 


echo "==========="."<pre>"; 
print_r($secondArray); 

echo "<pre>"; 
print_r(array_merge($firstArray,$secondArray)); 

//out put 
Array 
(
    [0] => Hello 
    [1] => There, 
) 
=========== 

Array 
(
    [0] => I'm 
    [1] => Cam 
) 

Array 
(
    [0] => Hello 
    [1] => There, 
    [2] => I'm 
    [3] => Cam 
) 

希望它能滿足您的要求。如果不是,或者你需要更多的指定,你可以澄清你的需要。

相關問題