Ce site fonctionne exactement comme l'outil Python zip()
fonction et est également compatible avec PHP < 5.3 :
function zip() {
$params = func_get_args();
if (count($params) === 1){ // this case could be probably cleaner
// single iterable passed
$result = array();
foreach ($params[0] as $item){
$result[] = array($item);
};
return $result;
};
$result = call_user_func_array('array_map',array_merge(array(null),$params));
$length = min(array_map('count', $params));
return array_slice($result, 0, $length);
};
Il fusionne les tableaux de la manière dont la fonction de Python zip()
ne retourne pas les éléments trouvés après avoir atteint la fin du tableau le plus court.
Les suivantes :
zip(array(1,2,3,4,5),array('a','b'));
donne le résultat suivant :
array(array(1,'a'), array(2,'b'))
et les suivantes :
zip(array(1,2,3,4,5),array('a','b'),array('x','y','z'));
donne le résultat suivant :
array(array(1,'a','x'), array(2,'b','y'))
Vérifiez cette démonstration pour une preuve de ce qui précède.
EDITAR : Ajout du support pour la réception d'un seul argument ( array_map
se comporte différemment dans ce cas ; merci Josiah ).
4 votes
"Le titre dit tout". Pas vraiment : que faire si je connais très bien le PHP, mais pas le Python ? Vous pourriez au moins expliquer le but et l'utilisation du "zip" de Python...
3 votes
@codeka Merci, j'ai inclus un lien vers les documents.
0 votes
@craig votre lien pour expliquer "une belle fonction zip()" dit : > Faire un itérateur qui agrège les éléments de chacun des itérables. > Elle retourne un itérateur de tuples, où le i-ième tuple contient le i-ième élément de chacune des séquences d'arguments ou itérables. L'itérateur s'arrête lorsque l'itérable d'entrée le plus court est épuisé. Avec un seul argument itérable, il retourne un itérateur de 1-tuples. Sans argument, il renvoie un itérateur vide. ... Je suis sûr à 80% que c'est la question que je cherche, mais ... vous n'avez pas aidé, mais de manière obtuse.