Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по PHP оффтопик небольшой (https://javascript.ru/forum/misc/26029-vopros-po-php-offtopik-nebolshojj.html)

vasa_c 23.02.2012 14:57

class Parser
{

    public function __construct($patch) {    
        $this->patch = $patch;    
    }
    
    public function getCategories() {
        return array_filter(scandir($val), array($this, 'callback));
    }
    
    private function callback($val) {
        if ($val == $this->patch) {
            return true;
        } else {
            return false;
        }
    }
    
    private $patch;

}

Gvozd 23.02.2012 14:57

dmitriymar,
Как это поможет?

dmitriymar 23.02.2012 14:59

Gvozd,
насколько я понял ему нужна сортировка массива с использованием его данных. это сортировка массива с использованием пользовательской функции
в принципе аналог array_filter только сортировку производит в самом массиве, а array_filter возвращает отсортированный

devote 23.02.2012 15:17

function getCatigories($patch) {
 
    function name($val) {

        global $patch;

        //вот тут я val сравниваю с внешней $patch
        if($val  == $patch){return true;}
        else{return false;}
    }
 
 
    return  array_filter(scandir($patch), 'name');
};
 
//то есть если элемент массива равен 'doors'  то оставить его.
getCatigories('doors');

Mахmaxmaximus 23.02.2012 17:13

Я получаю имена папок и файлов в одной директории, мне нужно получить массив только папок.

я получаю массив И папок и файлов, и пробегаясь по нему проверяряю что есть файл а что есть папка, и если это папка то засовываю путь в новый массив.

В итоге в новом массиве остаются только пути папок.


в JS это было бы так


function getFoldersArray(patch) {
	
	var arrFolders = [];

	//scandir возвращает массив и папок и файлов
	scandir(patch).forEach(thisPatch)
	{	
		//is_dir проверяет если папка то возвращает true
		if (is_dir(thisPatch)) {
			arrFolders.push(thisPatch);
		}
	}
	
	return arrFolders;
}

var arrayFoldersInDoorsFolder = getFoldersArray("/doors");

vasa_c 23.02.2012 17:17

http://ru2.php.net/glob

Mахmaxmaximus 23.02.2012 17:22

Цитата:

Сообщение от vasa_c
http://ru2.php.net/glob

да, я использую эту функцию для получения картинок.
glob('./doors/*.{jpg,jpeg,png,bmp,gif}', GLOB_BRACE);


я могу выбирать расширения, но
как я могу шаблоном определить папка это или файл?
$dirs = glob("./doors/*", GLOB_ONLYDIR);

Другой вопрос, как получить только файлы?

vasa_c 23.02.2012 17:28

Можно ещё вот это попробовать:
http://ru2.php.net/manual/en/class.d...ryiterator.php
http://ru2.php.net/manual/en/class.r...ryiterator.php
http://ru2.php.net/manual/en/class.r...eriterator.php

Mахmaxmaximus 23.02.2012 17:29

vasa_c,
спасибо огромное! но как получить только файлы?

vasa_c 23.02.2012 18:53

ну видимо придётся обходить всё и смотреть, файл это или нет


Часовой пояс GMT +3, время: 05:33.