从var_export中删除数值数组键

时间:2011-05-12 14:44:51

标签: php arrays

我想做var_export()并删除数组上的所有数值数组键。我的数组输出如下:

array (
  2 => 
  array (
    1 => 
    array (
      'infor' => 'Radiation therapy & chemo subhead',
      'PPOWithNotif' => '',
      'PPOWithOutNotif' => 'Radiation therapy & chemo PPO amount',
      'NonPPO' => 'Radiation therapy & chemo Non PPO amount',
    ),
  ),
  3 => 
  array (
    1 => 
    array (
      'infor' => 'Allergy testing & treatment subhead',
      'PPOWithNotif' => '',
      'PPOWithOutNotif' => 'Allergy testing & treatment PPO amount',
      'NonPPO' => 'Allergy testing & treatment Non PPO amount',
    ),
  )
)

通过这样做,我可以随心所欲地对数组值进行洗牌,而不必担心数值数组值。

我尝试过使用echo preg_replace("/[0-9]+ \=\>/i", '', var_export($data));,但它没有做任何事情。有什么建议?我的正则表达式有什么我没做的吗?是否有更好的解决方案呢?

3 个答案:

答案 0 :(得分:3)

您必须将var_export的第二个参数设置为true,否则您的preg_replace来电没有返回值。


参考:https://php.net/manual/function.var-export.php

  

<强>返回
  如果使用并设置为 TRUE var_export()将返回变量   代表而不是输出它。


更新:回顾这个问题,我有一个预感,一个简单的array_values($input)已经足够了。

答案 1 :(得分:0)

为什么不使用array_rand

 $keys = array_rand($array, 1);
 var_dump($array[$keys[0]]); // should print the random item

PHP还有一个函数shuffle,它将为您重新排列数组,然后使用foreach循环或next / each方法将其拉出来以随机顺序出来。

答案 2 :(得分:0)

可能不是您要寻找的答案,但是如果您有一个一级阵列,则可以使用下面的功能。它可能并不漂亮,但对我来说效果很好。

function arrayToText($array, $name = 'new_array') {
  $out = '';
  foreach($array as $item) {
    $export = var_export($item, true);
    $export = str_replace("array (\n", '', $export);
    $export = substr($export, 0, -1);
    $out .= "[\n";
    $out .= $export;
    $out .= "],\n";
  }
  return '$' . $name . ' = ' . "[\n" . substr($out, 0, -2) . "\n];";
}

echo arrayToText($array);