J'ai un tableau et dans ce tableau, j'ai une clé de tableau qui ressemble à, show_me_160
cette clé de tableau peut changer un peu, donc parfois la page peut se charger et la clé de tableau peut-être show_me_120
, je veux maintenant tableau clé jusqu'à la dernière _
afin que je puisse vérifier quelle est la valeur après le dernier trait de soulignement?
une solution à laquelle je peux penser:
foreach($myarray as $key=>$value){
if("show_me_" == substr($key,0,8)){
$number = substr($key,strrpos($key,'_'));
// do whatever you need to with $number...
}
}
J'ai rencontré un problème similaire récemment. Voici ce que je suis venu avec:
$value = $my_array[current(preg_grep('/^show_me_/', array_keys($my_array)))];
vous auriez à parcourir votre tableau pour vérifier chaque clé séparément, car vous n'avez pas la possibilité d'interroger directement le tableau (je suppose que le tableau contient également des clés totalement indépendantes, mais vous pouvez ignorer la partie if
si ce n'est pas l'affaire):
foreach($array as $k => $v)
{
if (strpos($k, 'show_me_') !== false)
{
$number = substr($k, strrpos($k, '_'));
}
}
Cependant, cela ressemble à une manière très étrange de stocker des données, et si j'étais vous, je vérifierais s'il n'y a pas d'autre moyen (plus efficace) de transmettre des données dans votre application;)
Vous pouvez également utiliser une solution basée sur preg_match
:
foreach($array as $str) {
if(preg_match('/^show_me_(\d+)$/',$str,$m)) {
echo "Array element ",$str," matched and number = ",$m[1],"\n";
}
}
foreach($myarray as $key=>$value)
if(count(explode('show_me_',$event_key)) > 1){
//if array key contains show_me_
}
Plus d'informations (exemple):
si la clé du tableau contient 'show_me_'
$ example = explode ('show_me _', 'show_me_120');
print_r ($ exemple)
Array ( [0] => [1] => 120 )
print_r (count ($ exemple))
2
print_r ($ exemple [1])
120
filter_array ($ tableau, fonction ($ var) {return (strpos ($ var, 'search_Word')!! == FAUX);},);
return array 'created_key' => 'valeur assignée à la clé'
pour rechercher certaines chaînes dans les clés de tableau, vous pouvez utiliser array_filter();
voir documentation
// the array you'll search in
$array = ["search_1"=>"value1","search_2"=>"value2","not_search"=>"value3"];
// filter the array and assign the returned array to variable
$foo = array_filter(
// the array you wanna search in
$array,
// callback function to search for certain sting
function ($key){
return(strpos($key,'search_') !== false);
},
// flag to let the array_filter(); know that you deal with array keys
ARRAY_FILTER_USE_KEY
);
// print out the returned array
print_r($foo);
si vous recherchez dans les valeurs du tableau, vous pouvez utiliser le drapeau 0 ou laisser le drapeau vide
$foo = array_filter(
// the array you wanna search in
$array,
// callback function to search for certain sting
function ($value){
return(strpos($value,'value') !== false);
},
// flag to let the array_filter(); know that you deal with array value
0
);
ou
$foo = array_filter(
// the array you wanna search in
$array,
// callback function to search for certain sting
function ($value){
return(strpos($value,'value') !== false);
}
);
si vous recherchez dans les valeurs et les clés de tableau, vous pouvez utiliser l'indicateur ARRAY_FILTER_USE_BOTH.
$foo = array_filter(
// the array you wanna search in
$array,
// callback function to search for certain sting
function ($value, $key){
return(strpos($key,'search_') !== false or strpos($value,'value') !== false);
},
ARRAY_FILTER_USE_BOTH
);
si vous recherchez les deux, vous devez passer 2 arguments à la fonction de rappel