「これからのための気持ちの整理。 」

これからのことを考えています。本当に、本当にめんどうくさい、めんどくさい人間です。これからのために、気持ちの整理をします。

(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)

以上です。