Ben bir dizi var ve bu dizi gibi bir dizi anahtar var, show_me_160
bu dizi anahtar biraz değişebilir, bu yüzden bazen sayfa yükleyebilir ve dizi anahtar belki show_me_120
, şimdi sadece dize maç mümkün olmak istiyorum dizinin son _
'e kadar kilitlenmesini sağlayın, böylece değerin son alt çizgiden sonra ne olduğunu kontrol edebilirim?kısmi dizgeye dayalı bir dizi anahtarı seçmek
cevap
tek çözüm: (I varsayarak doğrudan diziyi sorgulamak imkanı olmadığı için
foreach($myarray as $key=>$value){
if("show_me_" == substr($key,0,8)){
$number = substr($key,strrpos($key,'_'));
// do whatever you need to with $number...
}
}
için preg_metch işlevine bir geriçağırım işlevi kullanın, üzerinde çalıştığım şey için bunu düşündüm ama büyük dizilerde ağrılı bir şekilde yavaş olacağından şüpheleniyorum. ! '(! Strpos ($ k 'show_me_') == false)' 'olmalı if (strpos ($ v eğer, 'show_me_') ==: – GordonM
Eğer ayrı ayrı anahtar kontrol etmek için diziyi sürekli tekrarlanması gerekir dizi de tamamen alakasız anahtarlarını tutan, ancak bu durumda) değil eğer if
bölümü atlayabilirsiniz: ancak
foreach($array as $k => $v)
{
if (strpos($k, 'show_me_') !== false)
{
$number = substr($k, strrpos($k, '_'));
}
}
, bu verileri depolamak çok garip bir yol gibi geliyor, ve senin yerinde olsaydım, ben d Başka bir yol olmadığını kontrol edin (daha verimli)
foreach($array as $str) {
if(preg_match('/^show_me_(\d+)$/',$str,$m)) {
echo "Array element ",$str," matched and number = ",$m[1],"\n";
}
}
Bu notu olsa bu hat olduğunu, benim durumumda benim için çalışıyor yanlış) ' – freestate
Ayrıca preg_match
tabanlı çözümü kullanabilirsiniz.
$value = $my_array[current(preg_grep('/^show_me_/', array_keys($my_array)))];
Geçenlerde benzer bir sorun koştu:; uygulamanızda etrafında verileri geçme)
foreach($myarray as $key=>$value)
if(count(explode('show_me_',$event_key)) > 1){
//if array key contains show_me_
}
Daha bilgi (örnek): Bu benim ile geldi budur
dizi anahtarı 'show_me_' içeriyorsa
$ örneği = ('show_me_' patlayabilir,' show_me_120');
print_r ($ örneği)
Array ([0] => [1] => 120)
print_r (sayım ($ örneği))
2
print_r
120
kod bu parça ne anlama geldiğini daha detaylı bir şekilde açıklayabilir misiniz? dizi anahtarı $ örnek 'show_me_' içeriyorsa –
= patlayabilir ('show_me _' 'show_me_120'); $ örneğidir: Array ([0] => [1] => 120) sayısı ($ örneğin) aşağıdaki gibidir: ** 2 ** $ örneğin [1] olduğu: ** 120 * * – user5510975
Neden Gereklidir iki işlev Eğer alt dize veya strpos kullanabilirsiniz eğer, (patlayabilir ve sayım)? –
Bir verebilir ([1] $ örnek) örnek? – Gumbo
array_map ve '#show_me _ ([\ d]) + #' – Hannes