$test = 'love';
$eff = end(explode('ov',$test));
Ben bunu bilemiyorum; işin garibi, bu bir şikayet almaz:
$test = 'love';
$eff = current(explode('ov',$test));
The error I'm getting is: Strict: Only variables should be passed by reference
end()
, kendisine geçirilen dizi referans ile, değiştirir. end()
bunu değiştirebilirsiniz bir referansı vardır o yüzden önce bir değişkene patlama atayın.
$test = 'love';
$explosion = explode('ov',$test);
$eff = end($explosion);
end()
sadece zaten dizinin içeriğini değiştirmek değildir bu yüzden bir iç işaretçiyi değiştirir ve kullandığınız sürece fark etmez current()
, {[(2) }], yineleme için next()
çok.
Bu sınırlama end()
sizin için rahatsız edici ise etrafında yolu vardır:
function last($array) { return end($array); }
$test = 'love';
$eff = last(explode('ov', $test));
end
dizinin sonuna taşıyarak dizinin iç işaretçiyi değiştirir. Böylece parametre yararlı olması için bu işlem için (yani, bir dizi için bir referans) kesilebilir olmalıdır. Eğer uyarı almanızın nedeni budur.
current
tüm dizi temas etmez; sadece dizi bakar. Böylece parametre değişken olması gerekmez (böylece değeri tarafından kabul edilebilir) ve işlem size bir uyarı vermez.
<?php
error_reporting(E_STRICT);
$test = 'love';
$eff = end(explode('ov',$test));
var_dump($eff);
?>
hata raporlama düzeyi E_STRICT
ayarlı değil eğer iyi çalışır.
Eğer döndürülen bir geçici dizi var, bakın, sadece sadece bu gibi iç işaretçi ayarlanamaz. Sen end()
kullanarak sonuna kadar iç işaretçisini taşımak sonra ilk bir değişkene ayarlamanız gerekir.
Bu çok için de geçerlidir: reset()
, next()
, prev()
ve.
Aşağıdaki yerine çalışacak.
<?php
error_reporting(E_STRICT);
$test = 'love';
$a = explode('ov',$test);
$eff = end($a);
var_dump($eff);
?>
Bu iç işaretçiyi hareket etmez, ancak iç işaretçi işaret ettiğini ne mevcut eleman almak için current()
çalışır.