9 votes

Suppression des clés de tableaux numériques de var_export

Je veux faire var_export() et supprimer toutes les clés numériques d'un tableau. Mon tableau se présente comme suit :

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',
    ),
  )
)

De cette façon, je peux mélanger les valeurs du tableau selon mes besoins sans avoir à me soucier des valeurs numériques du tableau.

J'ai essayé d'utiliser echo preg_replace("/[0-9]+ \=\>/i", '', var_export($data)); mais ça ne fait rien. Avez-vous des suggestions ? Y a-t-il quelque chose que je ne fais pas avec mon expression rationnelle ? Existe-t-il une meilleure solution pour ce problème ?

3voto

Yoshi Points 25790

Vous devez définir le deuxième paramètre de var_export a true ou bien il n'y a pas de valeur de retour donnée à l'utilisateur. preg_replace appeler.


Référence : https://php.net/manual/function.var-export.php

retourner
S'il est utilisé et réglé sur VRAI , var_export() retournera la variable au lieu de l'éditer.


Mise à jour : En repensant à cette question, j'ai une intuition, une simple array_values($input) aurait été suffisant.

0voto

Jens Törnell Points 1797

Ce n'est peut-être pas la réponse que vous cherchez, mais si vous avez un tableau à un niveau vous pouvez utiliser la fonction ci-dessous. Ce n'est peut-être pas très beau, mais cela a bien fonctionné pour moi.

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);

0voto

Ce paquet fait les choses suivantes https://github.com/brick/varexporter

use Brick\VarExporter\VarExporter;
echo VarExporter::export([1, 2, ['foo' => 'bar', 'baz' => []]]);

Sortie :

[
    1,
    2,
    [
        'foo' => 'bar',
        'baz' => []
    ]
]

-3voto

Brad F Jacobs Points 12725

Pourquoi ne pas simplement utiliser array_rand :

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

PHP a également une fonction, shuffle qui mélangera le tableau pour vous, puis en utilisant une fonction foreach ou la boucle next / each méthodes que vous pouvez tirer dans l'ordre aléatoire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X