par
baddev » 23 oct. 2011, 11:06
Bonjour
Je cherche a partir de 2 arrays :
$ar1 = array('a', 'b', 'c', 'h', 'k');
$ar2 = array('a', 'c', 'e', 't');
a obtenir :
$idealar = array(
'a' => 'a',
'b' => '0',
'c' => 'c',
'0' => 'e',
'h' => '0',
'k' => '0',
'0' => 't'
);
J'ai donc ecrit le code suivant :
$finalar = null;
$tmp = array_unique(array_merge($ar1, $ar2));
sort($tmp);
for($i=0; $i<count($tmp); $i++)
{
if(array_search($tmp[$i], $ar1) && array_search($tmp[$i], $ar2))
$finalar[] = array($ar1[array_search($tmp[$i], $ar1)], $ar2[array_search($tmp[$i], $ar2)]);
if(array_search($tmp[$i], $ar1) && !array_search($tmp[$i], $ar2))
$finalar[] = array($ar1[array_search($tmp[$i], $ar1)], '0');
if(array_search($tmp[$i], $ar2) && !array_search($tmp[$i], $ar1))
$finalar[] = array('0', $ar2[array_search($tmp[$i], $ar2)]);
}
var_dump($finalar);
Qui me donne le resultat surprenant :
Code : Tout sélectionner
array(6) {
[0]=>
array(2) {
[0]=>
string(1) "b"
[1]=>
string(1) "0"
}
[1]=>
array(2) {
[0]=>
string(1) "c"
[1]=>
string(1) "c"
}
[2]=>
array(2) {
[0]=>
string(1) "0"
[1]=>
string(1) "e"
}
[3]=>
array(2) {
[0]=>
string(1) "h"
[1]=>
string(1) "0"
}
[4]=>
array(2) {
[0]=>
string(1) "k"
[1]=>
string(1) "0"
}
[5]=>
array(2) {
[0]=>
string(1) "0"
[1]=>
string(1) "t"
}
}
Je ne comprends pas pourquoi array_search ne semble pas reconnaitre le 'a' alors qu'il reconnait le 'c' ???
Quelqu'un aurait-il une explication a cette bizarrerie ?
Merci
Bonjour
Je cherche a partir de 2 arrays :
[php]$ar1 = array('a', 'b', 'c', 'h', 'k');
$ar2 = array('a', 'c', 'e', 't');[/php]
a obtenir :
[php]$idealar = array(
'a' => 'a',
'b' => '0',
'c' => 'c',
'0' => 'e',
'h' => '0',
'k' => '0',
'0' => 't'
);[/php]
J'ai donc ecrit le code suivant :
[php]$finalar = null;
$tmp = array_unique(array_merge($ar1, $ar2));
sort($tmp);
for($i=0; $i<count($tmp); $i++)
{
if(array_search($tmp[$i], $ar1) && array_search($tmp[$i], $ar2))
$finalar[] = array($ar1[array_search($tmp[$i], $ar1)], $ar2[array_search($tmp[$i], $ar2)]);
if(array_search($tmp[$i], $ar1) && !array_search($tmp[$i], $ar2))
$finalar[] = array($ar1[array_search($tmp[$i], $ar1)], '0');
if(array_search($tmp[$i], $ar2) && !array_search($tmp[$i], $ar1))
$finalar[] = array('0', $ar2[array_search($tmp[$i], $ar2)]);
}
var_dump($finalar);[/php]
Qui me donne le resultat surprenant :
[code]array(6) {
[0]=>
array(2) {
[0]=>
string(1) "b"
[1]=>
string(1) "0"
}
[1]=>
array(2) {
[0]=>
string(1) "c"
[1]=>
string(1) "c"
}
[2]=>
array(2) {
[0]=>
string(1) "0"
[1]=>
string(1) "e"
}
[3]=>
array(2) {
[0]=>
string(1) "h"
[1]=>
string(1) "0"
}
[4]=>
array(2) {
[0]=>
string(1) "k"
[1]=>
string(1) "0"
}
[5]=>
array(2) {
[0]=>
string(1) "0"
[1]=>
string(1) "t"
}
}
[/code]
Je ne comprends pas pourquoi array_search ne semble pas reconnaitre le 'a' alors qu'il reconnait le 'c' ???
Quelqu'un aurait-il une explication a cette bizarrerie ?
Merci