View Full Version : PHP - each e arrays doubt


Gurzi
28-06-2006, 13:44
Boas malta, estou aprender esta linguagem e a minha ideia é o seguinte..

Tenho um array básico $Utilizador = array(0=>"Pesquisa","Tiago","João","Pedro","Zacarias","Mariatchi");

a minha ideia era colocar na posição 0 do array o valor enviado pela caixa de texto no html com o nome 'search'.

Depois ele procurava na array valores iguais à posição 0 e mostrava em que posição estavam e que value tinham..

fiz isto :


Código
GeSHi (php):
<?
////////////////////////////////////////////////////
//ACÇÃO DO FICHEIRO TIAGO.HTML -- strcmcase.php////
///////////////////////////////////////////////////

$Utilizador = array (http://www.php.net/array)(0=>"Pesquisa","Tiago","Liliana","Tiago","João","Leonel","Mariana");

$Each = each (http://www.php.net/each)($Utilizador);
FOREACH($Utilizador AS $Procura)
{

$Procura[0] = $_POST['search'];
IF ($procura[0] == $procura)
echo (http://www.php.net/echo) "<br> ".$Each['key'] ."--".$Each['value'];
}

?>Created by GeSHI 1.0.7.5

Bem o resultado não é o esperado dando uma coisa deste género :

0--Pesquisa
0--Pesquisa
0--Pesquisa
0--Pesquisa
0--Pesquisa
0--Pesquisa
0--Pesquisa

o que não é nada que eu queira :\

obrigado desde ja´ http://www.portugal-a-programar.org/forum/Smileys/phpbb/wink.gif

ApM
28-06-2006, 16:41
hey!
n sei se tas a seguir algum exemplo ou assim, mas tas a fazer alguma confusao pra nada.
pra ja n sei se tens alguma utilidade a por o k keres procurar na primeira posicao do array, mas vou assumir k nao.

entao tens varias hipoteses pra fazer isso, entre as 102083 vão aki duas:
mais à la php, ou whatever...

$Utilizador = array("Pesquisa","Tiago","Liliana","Tiago","Joao","Leonel","bu");

while(list($key, $val) = each($Utilizador)){
if($val == $_POST['search'])
echo "<br> $key -- $val";
}


ou mais à la C:

$Utilizador = array("Pesquisa","Tiago","Liliana","Tiago","Joao","Leonel","bu");

for($i=0; $i<count($Utilizador); $i++){
if($Utilizador[$i] == $_POST['search'])
echo "<br> $i -- ". $Utilizador[$i];
}



Edit:
AH e dps tens uma funcao k ja faz isso:

$Utilizador = array("Pesquisa","Tiago","Liliana","Tiago","Joao","Leonel","bu");

echo "<br> " . array_search($_POST['search'], $Utilizador) . " -- " . $_POST['search'];

Gurzi
28-06-2006, 17:34
muito obrigado :) realmente é muito simples.. :)

tb já consigo fazer com um foreach() o problema é quando são arrays de arrays já troco-me todo no foreach e não consigo fazer :\

ah e o array_search só encontra 1 valor.. se tiver mais que 1 só mostra 1 valor..o que não é muito útil
:004:

ApM
28-06-2006, 19:47
bem essa do foreach é simples:
tens k ter dois foreach um dentro do outro. o primeiro vai iterando sobre os subarrays e o segundo sobre os valores.


$vector = array(array(1,2,3,4), array(5,6,7,8));

foreach($vector as $ivector){
foreach($ivector as $num){
echo $num . "<br>\n";
}
}

Gurzi
29-06-2006, 10:47
Hmm , acho que já apanhei a cena, obrigado :)

outra questão.. quando defines uma array é preferível definir através de

$var[x][x] =
$var[x][y] =
$var[x][z] =

ou $var= array(array("x)),array("y"),array("z"));

já agora, declarei igual das duas formas ? estou confuso com esta forma de declarar arrays =D

Lancaster
29-06-2006, 10:56
Heyas all...

Hmm , acho que já apanhei a cena, obrigado :)

outra questão.. quando defines uma array é preferível definir através de

$var[x][x] =
$var[x][y] =
$var[x][z] =

ou $var= array(array("x)),array("y"),array("z"));

já agora, declarei igual das duas formas ? estou confuso com esta forma de declarar arrays =D

Eu gosto mais de difinir da 1º maneira....mas isto são hábitos...

E não os declaras-te igual das duas formas..

Porque no segundo estás a dizer o seguinte:

$var[x] = array('x');
$var[x] = array('y');
$var[x] = array('z');


Espero que tenhas percebido..

Hasta all [[]]