Générez un tableau ayant les mêmes clés et valeurs avec PHP
Publié le 10/12/2022 • Actualisé le 10/12/2022
Dans ce bout de code, nous voyons comment générer un tableau ayant les mêmes clés et valeurs avec PHP. C'est la première fois que j'essaie chatGPT pour vérifier mon code, et sa proposition était fausse : j'ai dû ajouter une précision pour que la réponse soit correcte. Ma réponse est plus concise. Continuons et voyons ce qu'il nous proposera pour les prochains bouts de code. Mais pour l'instant le score est : COil 1 - ChatGPT 0 😁
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
/**
* J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
* Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
* ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
* Les services sont injectés dans le constructeur du contrôleur principal.
*/
trait Snippet234Trait
{
public function snippet234(): void
{
// My answser
$arr = array_combine($values = range(6, 11), $values);
print_r($arr);
// chatGPT question:
// "Can you give me a PHP snippet to have an array with the same keys and values,
// the first value should be 6 and the last value should be 11".
// chatGPT answer:
// - 1st try was wrong, I had to add to the question:
// "Each key should be equal to the associated value"
// Loop from 6 to 11 and add each value to the array
$array = []; // added by me for PHPStan
for ($i = 6; $i <= 11; ++$i) {
$array[$i] = $i;
}
print_r($array);
// winner = Me! 😁
// That's it! 😁
}
}
Exécuter le snippet ≪ this.showUnitTest ? this.trans.hide_unit_test : this.trans.show_unit_test ≫ Plus sur Stackoverflow Lire la doc Snippet aléatoire
<?php
declare(strict_types=1);
namespace App\Tests\Integration\Controller\Snippets;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
/**
* @see Snippet234Trait
*/
final class Snippet234Test extends KernelTestCase
{
/**
* @see Snippet234Trait::snippet234
*/
public function testSnippet234(): void
{
$myArr = array_combine($values = range(6, 11), $values);
self::assertSame([
6 => 6,
7 => 7,
8 => 8,
9 => 9,
10 => 10,
11 => 11,
], $myArr);
$chatGptArr = [];
for ($i = 6; $i <= 11; ++$i) {
$chatGptArr[$i] = $i;
}
self::assertSame($myArr, $chatGptArr);
}
}