php reference

通常寫 C, C++,
說要不用到指標或是C++參照,
好像不太可能,
php 就真的不常用到,
不過指標真的是個好用的東西,
昨天遇到的問題是,
類似 wordpress的分類可以有階層架構,
但對應關係在資料庫是一維的,
怎把一維的資訊轉換成皆成架構呢?
這問題以前在寫C++有遇過,
那時就是用指標的解法,
寫 php 就換了腦袋了 XD,
幸好今天起床有想起來,
php 也有 reference 可用~
總之這時 php reference 就是好用的時候了,
code 如以下,


array(
'parent_id' => null,
'name' => '0',
),
'b' => array(
'parent_id' => null,
'name' => '1',
),
2 => array(
'parent_id' => 1,
'name' => '2',
),
3 => array(
'parent_id' => 4,
'name' => '3',
),
4 => array(
'parent_id' => 'b',
'name' => '4',
),
);

$pivot = -1;

foreach ($arr as &$value) {
$value['children'] = array();
if (is_null($value['parent_id'])) {
$pivot += 1;
continue;
}
if (!array_key_exists($value['parent_id'], $arr)) {
continue;
}
$arr[$value['parent_id']]['children'][] = &$value;
}

print_r(array_slice($arr, 0, $pivot + 1, true));

ext4 一個目錄下可以擁有的檔案數目

其實限制不在於單一目錄,
而是是否達到 inode 上限,
inode 上限不是固定的,
不過在 mkfs 階段可以指定,
大於 block 數量多出的 inode 會無法使用,
到了 ext4 後,
解除了 ext3 最大子目錄 32000 限制,
但是一樣會受到 inode 上限限制.
當然這點是可以理解的,
因為目錄本身也會佔據 inode.