2017-06-16 57 views
0

嗨我正在處理非常複雜的數組操作。如何分離等於和創建單個陣列

我有存儲管分隔的字符串等高度= 10 $臨時變量|寬度= 20

我已經使用爆炸函數轉換成陣列,並獲得特定的輸出。

下面的代碼,我嘗試:

$product_attributes = explode("|",$temp) 

//below output i get after the explode. 

$product_attributes 

Array(
     [0]=>Height=10 
     [1]=>width=20 
) 

,但我想分析該陣列分離的。

我的預期輸出:

Array (
    [0]=>Array(
     [0] => Height 
     [1] => 10 
     ) 
    [1]=>Array(
     [0]=>Width 
     [1]=>20  
     ) 

    ) 

哪些功能我需要用於獲取慾望的輸出?

之前downvoting讓我知道,如果我所做的任何錯誤

+0

的錯誤,我看到,可以給予你一個downvote是您還沒有就如何解決它的任何代碼或企圖。 – Andreas

+0

@Andreas我已經做了一次爆炸,但第二次如何使用,我不知道 –

+0

這是真的。對於那個很抱歉。 (我沒有downvoted或有這樣做的意圖) – Andreas

回答

1

試試下面的代碼

<?php 

$temp = "Height=10|Width=20"; 

$product_attributes = explode("|", $temp); 

foreach ($product_attributes as $k => $v) { 
    $product_attributes[$k] = explode('=', $v); 
} 
echo '<pre>'; 
print_r($product_attributes); 
?> 

檢查運行答案here

+0

感謝您的幫助!排序和簡單易懂 –

+0

很高興爲您提供幫助。 – Narayan

2

你可以試試下面的代碼。我已經測試過了,它會輸出你在帖子中顯示的結果。

$temp = 'Height=10|Width=20'; 
$product_attributes = explode('|', $temp); 
$product_attributes2 = array(); 
foreach ($product_attributes as $attribute) { 
    $product_attributes2[] = explode('=', $attribute); 
} 
print_r($product_attributes2); 
+0

感謝您的幫助 –

1

處理您的結果通過此:

$f = function($value) { return explode('=', $value); } 
$result = array_map($f, $product_attributes); 
1

還有一個選擇是在一個陣列分裂值然後從那裏建立它們。

$str = "Height=10|Width=20"; 
$arr = preg_split("/\||=/", $str); 

$arr2= array(); 
$j=0; 
for($i=0;$i<count($arr);$i++){ 
    $arr2[$j][]= $arr[$i]; 
    $arr2[$j][]= $arr[$i+1]; 
    $i++; 
    $j++; 

} 
var_dump($arr2); 

輸出將是:

$arr = array(4){ 
     0 => Height 
     1 => 10 
     2 => Width 
     3 => 20 
     } 

$arr2 = array(2) { 
     [0]=> 
     array(2) { 
     [0]=> 
     string(6) "Height" 
     [1]=> 
     string(2) "10" 
     } 
     [1]=> 
     array(2) { 
     [0]=> 
     string(5) "Width" 
     [1]=> 
     string(2) "20" 
     } 
    }