Пропускане на първия резултат от Array

sentenello

Registered
Здравейте,

Прочетох доста неща свързани с това което питам в stackoverflow, но така и не можах да се справя.

Имам
$str който съдържа примерно ime1_ime2_ime3
направил съм
Код:
$d = explode('_', $str);
 foreach ($d as $tvname){
 echo "<tr>
			<td>$tvname</td>
		</tr>
				
";

 }

Но не мога да накарам foreach да почва след първия резултат и да изведе само ime2 i ime_3.

пробвах с $key => $tvname и после if $key!=0 но не става..
 
PHP:
$d = explode('_', $str);
foreach ($d as $k=>$tvname){
	if($k == 0) continue;
	echo "<tr>
		<td>$tvname</td>
      </tr>
            
	";
}

или

PHP:
$d = explode('_', $str);
unset(array_shift($d));
foreach ($d as $k=>$tvname){
	echo "<tr>
		<td>$tvname</td>
      </tr>
            
	";
}
 
dakata__92, по втория вариант - няма нужда от unset, защото array_shift директно премахва елемента, а на unset ако му подадеш стойност(а не променлива), нищо чудно да даде грешка. Просто така:

Направи го просто така:

PHP:
$d = exlpode('_', $str);

array_shift($d);
 
anonimen каза:
dakata__92, по втория вариант - няма нужда от unset, защото array_shift директно премахва елемента, а на unset ако му подадеш стойност(а не променлива), нищо чудно да даде грешка. Просто така:

Направи го просто така:

PHP:
$d = array_shift(exlpode('_', $str))

Даааа вярно, че бе така! Извинявам се anonimen e прав. Просто се заплеснах с друго и не се усетих, че пиша глупост.
 
dakata__92 каза:
anonimen каза:
dakata__92, по втория вариант - няма нужда от unset, защото array_shift директно премахва елемента, а на unset ако му подадеш стойност(а не променлива), нищо чудно да даде грешка. Просто така:

Направи го просто така:

PHP:
$d = array_shift(exlpode('_', $str))

Даааа вярно, че бе така! Извинявам се anonimen e прав. Просто се заплеснах с друго и не се усетих, че пиша глупост.
Тук отново си се заплеснал, защото и аз се бях заплеснал :D array_shift не връща масив, а връща извадения елемент. Едитнах се.
 
PHP:
$d = array(1,2,3,4,5);
array_shift($d);
foreach ($d as $k=>$tvname){
	echo "<tr>
		<td>$tvname</td>
      </tr>
            
	";
}

Ето така става. Премахва се първият елемент. :?:
 
С
Код:
$d = explode('_', $str);
array_shift($d);
 echo "<table id='tvsubmatch".$i."' style='display:none;'>";
 foreach ($d as $tvname){
 echo "<tr>
			<td>$tvname</td>
		</tr>
				
";

Така ми вади втория, все още нямам с 3 _ , за да видя дали работи, но след малко ще го пробвам и това.. А какъв е варианта да вади само първия елемент ?
 
sentenello каза:
С
Код:
$d = explode('_', $str);
array_shift($d);
 echo "<table id='tvsubmatch".$i."' style='display:none;'>";
 foreach ($d as $tvname){
 echo "<tr>
			<td>$tvname</td>
		</tr>
				
";

Така ми вади втория, все още нямам с 3 _ , за да видя дали работи, но след малко ще го пробвам и това.. А какъв е варианта да вади само първия елемент ?
echo $d[0];
:idea:
 
sentenello каза:
С
Код:
$d = explode('_', $str);
array_shift($d);
 echo "<table id='tvsubmatch".$i."' style='display:none;'>";
 foreach ($d as $tvname){
 echo "<tr>
			<td>$tvname</td>
		</tr>
				
";

Така ми вади втория, все още нямам с 3 _ , за да видя дали работи, но след малко ще го пробвам и това.. А какъв е варианта да вади само първия елемент ?
ако искаш първия елемент хем да се прмахне, хем да го вземещ:
$first = array_shift($d);
ако искаш само да го вземеш, виж на @dakata решението
 
На даката решението ми помогна, понякога се чудя въобще мисля ли какво питам.

сложих да извеждам $d[0] преди цикъла и преди array_shift($d);

а след това в цикъла вече ползвам по-нагоре написания код и така извеждам резултатите след първия. Блгадоря.
 
sentenello каза:
На даката решението ми помогна, понякога се чудя въобще мисля ли какво питам.

сложих да извеждам $d[0] преди цикъла и преди array_shift($d);

а след това в цикъла вече ползвам по-нагоре написания код и така извеждам резултатите след първия. Блгадоря.
Случва се на всеки! Аз лично понякога толкова забравям дребните неща, че на моменти в цикъл for съм се чудил , ли да слагам ; ли беше :D :D :D :D :?:
 
Ако искаш да си парснеш подобен стринг с точно уточнен брой и позиция, то може директно да си декларираш променливи:

PHP:
   list($ime1, $ime2, $ime3) = explode('_', $str);

Присвояването ще стане в обратен ред (първо $ime3 и накрая $ime1), но така или иначе променливите ще съдържат в крайна сметка това, което всъщност очаквате :)
 
може и с един for да се направи същото като започва не от 0-вия, а от първия елемент
 

Back
Горе