(php)文字列値keyのみの配列かを判別する
ソース
app/Support/ValueOperator.php
<?php namespace App\Support\ValueOpearator; class ArrayValueEvaluator { public static function isStringKeyArray(array $arrayToBeEvaluated):bool { return count(array_filter(array_keys($arrayToBeEvaluated), 'is_int')) === 0; } }
テスト
tests/Unit/ArrayValueEvaluatorTest.php
<?php namespace Tests\Unit; use Tests\TestCase; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\RefreshDatabase; use App\Support\ValueOpearator\ArrayValueEvaluator; class ArrayValueEvaluatorTest extends TestCase { protected $data; public function setUp():void { $this->data = [ '数値keyのみの配列'=>[ 0=>'0', 1=>'1', 2=>'2', ], '文字列値keyのみの配列'=>[ 'a'=>'0', 'b'=>'1', 'c'=>'2', ], ]; } /** @test */ public function case_isStringKeyArray_数値keyのみの配列の時はfalseが返る() { $this->assertEquals(false, ArrayValueEvaluator::isStringKeyArray($this->data['数値keyのみの配列'])); } /** @test */ public function case_isStringKeyArray_文字列値keyのみの配列の時はtrueが返る() { $this->assertTrue( ArrayValueEvaluator::isStringKeyArray( $this->data['文字列値keyのみの配列'] ) ); } }
結果
vagrant@homestead:~/code/ttn-1129-laravel$ vendor/bin/phpunit tests/Unit/ArrayValueEvaluatorTest.php PHPUnit 7.5.16 by Sebastian Bergmann and contributors. .. 2 / 2 (100%) Time: 664 ms, Memory: 8.00 MB OK (2 tests, 2 assertions)
以上です。