Question

Comment puis-je exploser cette chaîne '||25||34||73||94||116||128' je dois avoir un tableau comme celui-ci

array (
 0 => '25',
 1 => '34',
 2 => '73',
 3 => '94',
 4 => '116',
 5 => '128'
)

exploser ( "||", $ array); na pas pour moi le travail je reçois ce tableau

array (
 0 => '',
 1 => '25',
 2 => '34',
 3 => '73',
 4 => '94',
 5 => '116',
 6 => '128',
) 
Était-ce utile?

La solution

$array = explode('||', trim($string, '|'));

Autres conseils

Une solution, en particulier si vous pouvez avoir des valeurs vides au milieu de la chaîne , pourrait être d'utiliser preg_split et son drapeau PREG_SPLIT_NO_EMPTY :

$str = '||25||34||73||94||116||128';
$array = preg_split('/\|\|/', $str, -1, PREG_SPLIT_NO_EMPTY);
var_dump($array);

Est-ce que vous donner:

array
  0 => string '25' (length=2)
  1 => string '34' (length=2)
  2 => string '73' (length=2)
  3 => string '94' (length=2)
  4 => string '116' (length=3)
  5 => string '128' (length=3)


Si vous n'aurez jamais valeurs vides au milieu de la chaîne, bien que, à l'aide explode sera plus rapide, même si vous devez retirer le || au début et à la fin de la chaîne avant de l'appeler.

$str='||25||34||73||94||116||128';
$s = array_filter(explode("||",$str),is_numeric);
print_r($s);

output

$ php test.php
Array
(
    [1] => 25
    [2] => 34
    [3] => 73
    [4] => 94
    [5] => 116
    [6] => 128
)

Depuis une de vos questions précédentes était comment stocker et mettre à jour une telle chaîne dans MySQL ... supposons un instant de vos tâches futures sera de savoir si une certaine valeur est dans ce tableau / string ou pour trouver / compter tous les enregistrements qui ont une certaine valeur dans ce tableau.
Dans ce cas, vous peut normalisant votre table maintenant.

Vous pouvez faire:

explode('||',substr($str,2));

Outre les solutions déjà mentionnées, vous pouvez également filtrer les valeurs vides après:

$arr = array_filter(explode("||", $str), function($val) { return trim($val) === ""; });

Cet exemple utilise fonction anonyme que vous devrez remplacer si vous ne l'utilisez PHP 5.3 ou plus, soit en utilisant create_function :

$arr = array_filter(explode("||", $str), create_function('$val', 'return trim($val) === "";'));

Ou avec une fonction prédéfinie:

function isEmptyString($str) {
    return trim($str) === "";
}
$arr = array_filter(explode("||", $str), "isEmptyString");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top