average hashで類似画像を検索

<?php
    include_once 'ahash-common.inc.php';

    define("PHOTO_PATH", "images");

    $up_form = <<< EOS
    <h3>類似画像検索(Average Hash)</h3>
    <div style="border:1px solid silver;padding:12px">
    JPEGファイルを選択してください。<br>
    <form enctype="multipart/form-data" method="POST">
    <input name="upfile" type="file"><br>
    <input type="submit" value="アップロード">
</form></div>
    EOS;
    $head = '<html><meta charset="utf-8"><body>';
    $foot = '</body></html>';

    if(empty($_FILES['upfile']['tmp_name'])){
        echo $head.$up_form.$foot;
        exit;
    }
    $upfile = dirname(__FILE__).'/upfile.jpg';
    move_uploaded_file($_FILES['upfile']['tmp_name'], $upfile);

    $target = makeAHash($upfile, false);
    $files = enumJpeg(PHOTO_PATH);
    $result = checkHash($target, $files);
    $top6 = array_slice($result, 0, 6);
    echo $head;
    echo "<div style='text-align:center'><h2>アップした写真</h2>";
    echo "<img src='upfile.jpg' width=300>";
    echo "<h2>以下類似する順番に表示</h2>";
    foreach($top6 as $f){
        $path = $f['path'];
        $value = $f['value'];
        echo "<img src='path' width=300 alt='$value:$path'>";
    }
    echo "</div>".$foot;

    // hashから類似度を算出
    function checkHash($target, $files){
        $list = [];
        foreach ($files as $file){
            $hash = makeAHash($file);
            $match = 0;
            for ($i = 0; $i < strlen($target); $i++){
                if (substr($target,$i,1) == substr($hash,$i,1)) $match++;
            }
            $list&#91;&#93; = &#91;
            "path" => $file,
            "value" => $match,
            ];
        }
        usort($list, function ($a, $b){
              return $b['value'] - $a['value'];
              });
        return $list;
    }