在 php 中用不同的分隔符内爆多维数组
Implode multidimentional array with different delimiters in php
我有一个多维数组,我想对其进行内爆(然后再分解回原来的多维数组)。有没有办法内爆,保留钥匙?
这是我的数组的示例:
Array (
[draw] => 1
[columns] => Array (
[0] => Array (
[data] => 0
[name] => Edit
[searchable] => true
[orderable] => true
[search] => Array (
[value] =>
[regex] => false ) )
[1] => Array (
[data] => 1
[name] =>
[searchable] => true
[orderable] => true
[search] => Array (
[value] =>
[regex] => false ) )
[2] => Array (
[data] => 2
[name] =>
[searchable] => true
[orderable] => true
[search] => Array (
[value] =>
[regex] => false ) )
这是我尝试过但没有成功的方法:
$out = implode('::',array_map(function($a)
{
return implode('&&',array_map(function($b)
{
return implode('~~',$b);
},$array));
}));
我也试过这个:
foreach($array as $Value)
{
if(is_array($Value))
{
foreach($Value as $Columns)
{
if(is_array($Columns))
{
foreach($Columns as $Search)
{
if(is_array($Search))
{
$Search = implode("::",$Search);
}
//echo "<br>Search: "; print_r($Search);
}
}
else
{
echo "<br>Columns: "; print_r($Columns);
//$Columns = implode("&&",$Columns);
}
}
}
else
{
//$Value = implode("~~",$Value);
}
}
//print_r($array);
我希望它在内爆结束时的样子是:
[draw] => 1 :: [columns] => && [0] => ~~ [data] => 0 ~~ [name] => Edit ~~ [searchable] => true ~~ [orderable] => true ~~ [search] => %% [value] => %% [regex] => false && [1] => ~~ [data] => 1 ~~ [name] => ~~ [searchable] => true ~~ [orderable] => true ~~ [search] => %% [value] => %% [regex] => false
至少我很确定所有的分隔符都在正确的位置。如果我不能保留键,只要分隔符在正确的位置就可以了,我可以稍后重新创建多维数组。
我得到了它的工作并认为我会 post 为将来可能需要它们的每个人提供结果。
我意识到我知道钥匙是什么,我可以在内爆过程中使用它们。所以我这样做了:
function Convert_From_Array($array)
{
$Number = count($array['columns']);
for ($i = 0 ; $i < $Number ; $i++)
{
$array['columns'][$i]['search'] = implode('::',$array['columns'][$i]['search']);
$array['columns'][$i] = implode('&&', $array['columns'][$i]);
}
$array['columns'] = implode('~~', $array['columns']);
$array['order'][0] = implode('&&',$array['order'][0]);
$array['order'] = implode('&&',$array['order']);
$array['search'] = implode('&&',$array['search']);
$array = implode('%%', $array);
}
然后为了使用这个函数我这样称呼它:
$PostKept = Convert_From_Array($KeepPost);
$KeepPost
是 multi-dimensional 数组,我正在尝试内爆。最终结果如下所示:
1%%0&&Edit&&true&&true&&::false~~1&&&&true&&true&&::false~~2&&&&true&&true&&::false~~3&&&&true&&true&&::false~~4&&&&true&&true&&::false~~5&&&&true&&true&&::false~~6&&&&true&&true&&::false~~7&&&&true&&true&&::false~~8&&&&true&&true&&::false%%0&&asc%%0%%25%%&&false%%QDefs
现在我必须稍后将它们重新组合起来。
为什么不在结构上使用 serialize()
然后 unserialize()
将其取回?
这个 PHP 内置函数肯定比您自己编写的任何自定义代码都有效 better/faster/safer。
我有一个多维数组,我想对其进行内爆(然后再分解回原来的多维数组)。有没有办法内爆,保留钥匙?
这是我的数组的示例:
Array (
[draw] => 1
[columns] => Array (
[0] => Array (
[data] => 0
[name] => Edit
[searchable] => true
[orderable] => true
[search] => Array (
[value] =>
[regex] => false ) )
[1] => Array (
[data] => 1
[name] =>
[searchable] => true
[orderable] => true
[search] => Array (
[value] =>
[regex] => false ) )
[2] => Array (
[data] => 2
[name] =>
[searchable] => true
[orderable] => true
[search] => Array (
[value] =>
[regex] => false ) )
这是我尝试过但没有成功的方法:
$out = implode('::',array_map(function($a)
{
return implode('&&',array_map(function($b)
{
return implode('~~',$b);
},$array));
}));
我也试过这个:
foreach($array as $Value)
{
if(is_array($Value))
{
foreach($Value as $Columns)
{
if(is_array($Columns))
{
foreach($Columns as $Search)
{
if(is_array($Search))
{
$Search = implode("::",$Search);
}
//echo "<br>Search: "; print_r($Search);
}
}
else
{
echo "<br>Columns: "; print_r($Columns);
//$Columns = implode("&&",$Columns);
}
}
}
else
{
//$Value = implode("~~",$Value);
}
}
//print_r($array);
我希望它在内爆结束时的样子是:
[draw] => 1 :: [columns] => && [0] => ~~ [data] => 0 ~~ [name] => Edit ~~ [searchable] => true ~~ [orderable] => true ~~ [search] => %% [value] => %% [regex] => false && [1] => ~~ [data] => 1 ~~ [name] => ~~ [searchable] => true ~~ [orderable] => true ~~ [search] => %% [value] => %% [regex] => false
至少我很确定所有的分隔符都在正确的位置。如果我不能保留键,只要分隔符在正确的位置就可以了,我可以稍后重新创建多维数组。
我得到了它的工作并认为我会 post 为将来可能需要它们的每个人提供结果。
我意识到我知道钥匙是什么,我可以在内爆过程中使用它们。所以我这样做了:
function Convert_From_Array($array)
{
$Number = count($array['columns']);
for ($i = 0 ; $i < $Number ; $i++)
{
$array['columns'][$i]['search'] = implode('::',$array['columns'][$i]['search']);
$array['columns'][$i] = implode('&&', $array['columns'][$i]);
}
$array['columns'] = implode('~~', $array['columns']);
$array['order'][0] = implode('&&',$array['order'][0]);
$array['order'] = implode('&&',$array['order']);
$array['search'] = implode('&&',$array['search']);
$array = implode('%%', $array);
}
然后为了使用这个函数我这样称呼它:
$PostKept = Convert_From_Array($KeepPost);
$KeepPost
是 multi-dimensional 数组,我正在尝试内爆。最终结果如下所示:
1%%0&&Edit&&true&&true&&::false~~1&&&&true&&true&&::false~~2&&&&true&&true&&::false~~3&&&&true&&true&&::false~~4&&&&true&&true&&::false~~5&&&&true&&true&&::false~~6&&&&true&&true&&::false~~7&&&&true&&true&&::false~~8&&&&true&&true&&::false%%0&&asc%%0%%25%%&&false%%QDefs
现在我必须稍后将它们重新组合起来。
为什么不在结构上使用 serialize()
然后 unserialize()
将其取回?
这个 PHP 内置函数肯定比您自己编写的任何自定义代码都有效 better/faster/safer。