2016-07-21 42 views
3

我有一个string这样的..如何使一个字符串到一个数组在PHP

food_item => 'Butter Croissant',food_id => '1',quantity => '1',price => '140' 

我试图爆炸选项

但我发现了一个array这样

Array 
(
    [0] => 'food_item' => 'Butter Croissant' 
    [1] => 'food_id' => '1' 
    [2] => 'quantity' => '1' 
    [3] => 'price' => '140' 
) 

但我需要做它作为一个array像下面这样

Array 
(
    [food_item] => 'Butter Croissant' 
    [food_id] => '1' 
    [quantity] => '1' 
    [price]  => '140' 
) 

我应该怎么做,有人请帮助我..

预先感谢您..

+0

你的第一个“字符串”是一个数组,而不是一个字符串 –

+0

也许他把它作为一个字符串...... – Ivan

+0

也许,但它有点令人困惑 –

回答

2

你可以像贝洛一样做女: -

<?php 
$string = "food_item => 'Butter Croissant',food_id => '1',quantity => '1',price => '140'"; // original string 

$first_array = explode(',',$string); // your first explode with `,` 

$final_array = array(); // create a new empty array 

foreach($first_array as $arr){ // iterate over previously exploded array 
    $data = explode('=>',$arr); // now explode the value again with `=>` 
    $final_array[trim($data[0])] = trim($data[1]); // add it to final array in the form of key=>value pair 
} 

echo "<pre/>";print_r($final_array); 

输出: - https://eval.in/609356

注: - 这是最简单的事情要做,而且要了解also.thanks

+0

谢谢sooo :) :) D最后我明白了...你救了我的一天... –

+0

@SuganyaRajasekar很乐意帮助你 –

+0

@ Anant是的,我做到了:) –

4

尝试:

$str = "food_item => 'Butter Croissant',food_id => '1',quantity => '1',price => '140'"; 
$mainArray = explode(",",$str); 
$newArray = array(); 
foreach($mainArray as $main) { 
    $innerArray = explode("=>",$main); 
    $newArray[trim($innerArray[0])] = trim($innerArray[1]); 
} 

输出:

Array 
(
    [food_item] => 'Butter Croissant' 
    [food_id] => '1' 
    [quantity] => '1' 
    [price] => '140' 
) 
+0

谢谢你的回答.. :) –

1

您可以使用此:

$str = "food_item => 'Butter Croissant',food_id => '1',quantity => '1',price => '140'"; 
$exploded = array_map('myExplode', explode(',', $str)); 
$result = []; 
foreach ($exploded as $itemPieces) { 
    $result[trim($itemPieces[0])] = trim($itemPieces[1]); 
} 

function myExplode($item) { 
    return explode("=>", str_replace("'", '', $item)); 
} 

var_dump($result); 

OUTPUT

array (size=4) 
    'food_item' => string 'Butter Croissant' (length=16) 
    'food_id' => string '1' (length=1) 
    'quantity' => string '1' (length=1) 
    'price' => string '140' (length=3) 
1

你可以结合使用preg_splitforeach回路的,像这样:

<?php 
     $strArray  = "food_item => 'Butter Croissant',food_id => '1',quantity => '1',price => '140'"; 
     $arrKVPairs  = preg_split("#,\s?#", $strArray); 
     $arrStrToArray = array(); 

     foreach($arrKVPairs as $ikey=>$strData){ 
      $arrKeyVal  = preg_split("#\s?\=>\s?#", trim($strData, "'")); 
      if(count($arrKeyVal) == 2){ 
       list($key, $val)  = $arrKeyVal; 
       $arrStrToArray[$key] = trim($val, "'"); 
      } 
     } 
     var_dump($arrStrToArray); 
     // PRODUCES:: 

     array (size=4) 
      'food_item' => string 'Butter Croissant' (length=16) 
      'food_id' => string '1' (length=1) 
      'quantity' => string '1' (length=1) 
      'price' => string '140' (length=3) 
1

因为我们得到了答案,我想后不同的解决方案(给定的字符串很像参数字符串,可以在阵列解析或在parse_str功能增值经销商):

$string = "food_item => 'Butter Croissant',food_id => '1',quantity => '1',price => '140'"; 

$paramString = str_replace([',', " => ", "'"], ['&', '=', ''], $string); 

parse_str($paramString, $data); 

需要现在我们得到的数据和代码看起来有点清洁

相关问题