Ben aşağıdaki kodu vardır:
if ($_POST['submit'] == "Next") {
foreach($_POST['info'] as $key => $value) {
echo $value;
}
}
Nasıl foreach işlevi dizideki 2. tuşu başlamak alabilirim? Thanx.
Makul küçük diziler için, array_slice, ikinci bir tane oluşturmak için kullanabilirsiniz:
foreach(array_slice($_POST['info'],1) as $key=>$value)
{
echo $value;
}
Normal bir dizi çalışma olsaydı, ben gibi bir şey kullanmak için söyleyebilirim
foreach (array_slice($ome_array, 1) as $k => $v {...
Eğer bir kullanıcının isteği bakıyoruz ama beri, sen argümanlar iade olabilir hangi sırayla herhangi bir gerçek garanti yok - bazı tarayıcı / vekil onun davranışını değiştirmek olabilir veya sadece formunuzu değiştirmeye karar verebilir gelecek. Her iki durumda da, bu dizinin sıralamasını göz ardı ve size iki seçenek bırakarak, sırasız bir karma harita olarak POST değerleri tedavi etmek için en iyi ilgi var:
unset
tuşuna görmezden istiyorumcontinue
döngü görmezden istediğiniz anahtarını görünce1000 elemanları ile dolu bir dizi üzerinde fark oldukça az.
Test:
<?php
function slice($a)
{
foreach(array_slice($a, 1) as $key)
{
}
return true;
}
function skip($a)
{
$first = false;
foreach($a as $key)
{
if($first)
{
$first = false;
continue;
}
}
return true;
}
$array = array_fill(0, 1000, 'test');
$t1 = time() + microtime(true);
for ($i = 0; $i < 1000; $i++)
{
slice($array);
}
var_dump((time() + microtime(true)) - $t1);
echo '<hr />';
$t2 = time() + microtime(true);
for ($i = 0; $i < 1000; $i++)
{
skip($array);
}
var_dump((time() + microtime(true)) - $t2);
?>
Output:
şamandıra (0,23605012893677)
şamandıra (0,24102783203125)
Eğer farklı form yapısı ise
<input type='text' name='quiz[first]' value=""/>
<input type='text' name='quiz[second]' value=""/>
... Sonra PHP
if( isset($_POST['quiz']) AND
is_array($_POST['quiz'])) {
//...and we'll skip $_POST['quiz']['first']
foreach($_POST['quiz'] as $key => $val){
if($key == "first") continue;
print $val;
}
}
... Bu özel yapısı ve normal erişim kalanı üzerinde yapabilirsiniz şimdi sadece döngü
Nasıl böyle bir şey? O (EDIT: Don't use array_shift()
array_shift()
, bu yeniden numaralandırılır diziden ön elemanı sıradan çıkarma için, key()
ve current()
kullanılarak birinci anahtarı ve değerini okuyun Her zaman istemediğiniz dizisindeki herhangi bir sayısal endeksleri!).
<?php $arr = array( 'one' => "ONE!!", 'two' => "TWO!!", 'three' => "TREE", 4 => "Fourth element", 99 => "We skipped a few here.." ) ; $firstKey = key( $arr ) ; $firstVal = current( $arr ) ; echo( "Tamam, ilk değerler $ firstKey, $ firstVal
" ) ; ####array_shift( $arr ) ; #'dequeue' front element# BAD! renumbers! unset( $arr[ $firstKey ] ) ; # BETTER! echo( "Şimdi bunların geri kalanı için
" ) ; foreach( $arr as $key=>$val ) { echo( "$ Anahtar => $ val
" ) ; } ?>