0

たとえば、「/path1/folder/fun/yay/」のような文字列がある場合

次のように、関数を使用してすべての親パスの配列を返すにはどうすればよいですか。

array (
    '/',
    '/path1/',
    '/path1/folder/',
    '/path1/folder/fun/',
    '/path1/folder/fun/yay/'
)

これは私がこれまでに持っているものです。明らかに機能せず、控えめに言っても混乱しています...

$a = explode('/',$path); $ii = 0; $path_array = array();

for ($i = 0; $i < sizeof($a); $i++) {

    if ($a[$i]) { 

        $path_array[$ii] = "";

        for ($n = 0; $n < $i; $n++)
        {

        $path_array[$ii] .= $a[$n];

        }

        $ii++;

    }   
}

file_put_contents('text.txt',serialize($path_array));

ありがとう!

ところで、ここでの私の最終目標は、フォルダー パスのテーブルに対して SQL クエリを実行して、フォルダーとそのすべての親の値をインクリメントできるようにすることです。

パスが入力したパスの一部であるすべての行を選択できる、ある種の SQL 演算子があるのではないでしょうか? 逆にこんな感じ。

mysqli_query($mysqli,'UPDATE content_folders SET size = size+'.filesize("content/$id").' WHERE path LIKE "'.$path.'%"')
4

2 に答える 2

0

PHP関数については、次のようなものが機能します。

function returnAllPaths ( $fullPath = '/' , Array $pathHistory = array() )
{
    while ( strlen($fullPath) > 1 AND $fullPath[0] === '/' )
    {   
        array_push($pathHistory, $fullPath); 
        $fullPath = preg_replace('%(.*/)[^/]+(?:/)?$%is', '$1', $fullPath);        
    }
    array_push($pathHistory, $fullPath);
    return array_reverse($pathHistory);
}
于 2013-04-24T02:47:00.813 に答える