在 magento 1.x 中拆分数组

Split array in magento 1.x

我有一个这样的数组

on;tracking34567;1;ABC;2019-08-13;on;tracking123;1;BCD;2019-08-13;on;123456test;1;USA;2019-08-13;

如何分割成这样

Array
(
    [0] => on
    [1] => tracking34567
    [2] => 1
    [3] => ABC
    [4] => 2019-08-13
)
Array
(
    [0] => on
    [1] => tracking123
    [2] => 1
    [3] => BCD
    [4] => 2019-08-13
)
Array
(
    [0] => on
    [1] => 123456test
    [2] => 1
    [3] => USA
    [4] => 2019-08-13
)

请帮帮我

更新

我试过了,但它显示了

public function indexAction()
      {
        $data = $this->getRequest()->getParam("values");
        $temp = explode(";",$string);
        $i = 0;
        $result = array();
        foreach($temp as $v){
            if($v == "on"){
                $i++;
            }
            $result[$i][] = $v;
        }
        print_r($result);exit;
          // var_dump($data);exit;
      }

更新

它工作正常,但如果我需要这样的数组,如何更改它?

Array
(
    [a] => on
    [b] => tracking34567
    [c] => 1
    [d] => ABC
    [e] => 2019-08-13
)
Array
(
    [a] => on
    [b] => tracking123
    [c] => 1
    [d] => BCD
    [e] => 2019-08-13
)
Array
(
    [a] => on
    [b] => 123456test
    [c] => 1
    [d] => USA
    [e] => 2019-08-13
)

您可以如下使用:

$arrayStr = "on;tracking34567;1;ABC;2019-08-13;on;tracking123;1;BCD;2019-08-13;on;123456test;1;USA;2019-08-13";
print_r (explode(";",$arrayStr));

您首先需要转换数组中的整个字符串

<?php
$string = 'on;tracking34567;1;ABC;2019-08-13;on;tracking123;1;BCD;2019-08-13;on;123456test;1;USA;2019-08-13;';
$temp = explode(";",$string);

现在使用这个临时数组创建新数组

$i = -1;
$k = 0;
$result = array();
$alpha = range('a','z');
foreach($temp as $v){
    if($v == "on"){
        $i++;
        $k=0;
    }
    $result[$i][$alpha[$k]] = $v;
    $k++;
}

您将在 $result

中得到结果

你能试试这个吗,它会对你有帮助。

    <?php
    $string = 'on;tracking34567;1;ABC;2019-08-13;on;tracking123;1;BCD;2019-08-13;on;123456test;1;USA;2019-08-13;';

    $arr = explode(';',$string);

    $result = array_chunk($arr, 5);

    echo "<pre>";

    print_r($result);

    ?>

你可以试试这个

$string = 'on;tracking34567;1;ABC;2019-08-13;on;tracking123;1;BCD;2019-08-13;on;123456test;1;USA;2019-08-13;';
$temp = explode(";",$string);
$i = 0;
$result = array();
$j = 'a';
foreach($temp as $v){

    if($v == "on"){
        $i++;
        $j = 'a';
    }else
    {
        $j++;
    }
    $result[$i][$j] = $v;
}

试试这个

<?php

$string = "on;tracking34567;1;ABC;2019-08-13;on;tracking123;1;BCD;2019-08-13;on;123456test;1;USA;2019-08-13";
$arr = explode("on",$string);

for($i = 1; $i < count($arr); $i++ ){
    $arr[$i] = "on".$arr[$i];
    $arr[$i] = explode(";",$arr[$i]);
}


$arr = array_filter($arr)

如果您的字符串中的值始终采用相同的格式并且字符串中始终有五个元素,那么您可以使用更好更简单的方法来实现,而不是使用循环。

可以使用php内置函数实现。 下面看看代码。

<?php
$text = "on;tracking34567;1;ABC;2019-08-13;on;tracking123;1;BCD;2019-08-13;on;123456test;1;USA;2019-08-13;";
$exploded_string = explode(';', $text);
$final_array = array_chunk($exploded_string, 5);
print_r($final_array);
?>

希望这个helps.Thanks