J'ai un tableau qui ressemble à ceci:
array(
'abc' => 0
'foo-bcd' => 1
'foo-def' => 1
'foo-xyz' => 0
...
)
Comment obtenir uniquement les éléments qui commencent par foo-
?
J'ai un tableau qui ressemble à ceci:
array(
'abc' => 0
'foo-bcd' => 1
'foo-def' => 1
'foo-xyz' => 0
...
)
Comment obtenir uniquement les éléments qui commencent par foo-
?
Approche fonctionnelle:
Choisissez une sorte de fonction array_filter_key
partir des commentaires dans http://php.net/array_filter
ou écrivez les vôtres. Ensuite...
$array = array_filter_key($array, function($key) {
return strpos($key, 'foo-') === 0;
});
Approche procédurale:
$only_foo = array();
foreach ($array as $key => $value) {
if (strpos($key, 'foo-') === 0) {
$only_foo[$key] = $value;
}
}
Approche procédurale utilisant des objets:
$i = new ArrayIterator($array);
$only_foo = array();
while ($i->valid()) {
if (strpos($key, 'foo-') === 0) {
$only_foo[$i->key()] = $i->current();
}
$i->next();
}
Depuis PHP 5.3, vous pouvez utiliser la fonction preg_filter
:
http://www.php.net/manual/en/function.preg-filter.php
$unprefixed_keys = preg_filter('/^foo-(.*)/', '$1', array_keys( $arr ));
// Result:
// $unprefixed_keys === array('bcd','def','xyz')
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.