Попробуйте это
public function getNextVal(&$array, $curr_val){
foreach($array as $k=>$v){
if($v['your_key'] == $curr_val){
if(isset($array[$k+1]))
return $array[$k+1];
else
return $array[0];
}
}
}
public function getPrevVal(&$array, $curr_val){
foreach($array as $k=>$v){
if($v['your_key'] == $curr_val){
if(isset($array[$k-1]))
return $array[$k-1];
else
return end($array);
}
}
}
для массива следующим образом:
array (size=3)
0 =>
array (size=11)
'id' => string '21' (length=2)
'cat' => string '1' (length=1)
'gal' => string '1' (length=1)
'type' => string 'image' (length=5)
'name' => string 'chalk_art_dies-irea_2nd_pic' (length=27)
'permalink' => string 'chalk-art-dies-irea-2nd-pic' (length=27)
'url' => string 'rxNsPoEiJboJQ32.jpg' (length=19)
'content' => string '' (length=0)
'date' => string '1432076359' (length=10)
'order' => string '20' (length=2)
'views' => string '0' (length=1)
1 =>
array (size=11)
'id' => string '10' (length=2)
'cat' => string '1' (length=1)
'gal' => string '1' (length=1)
'type' => string 'image' (length=5)
'name' => string '3dchalkart' (length=10)
'permalink' => string '3dchalkart' (length=10)
'url' => string 's57i5DKueUEI4lu.jpg' (length=19)
'content' => string '' (length=0)
'date' => string '1432076358' (length=10)
'order' => string '9' (length=1)
'views' => string '0' (length=1)
2 =>
Вы имеете в виду непосредственные подкаталоги или каждый каталог прямо по дереву?
В любом случае вы можете использовать os.walk
для этого:
os.walk(directory)
даст кортеж для каждого подкаталога. Первая запись в кортеже из трех - это имя каталога, поэтому
[x[0] for x in os.walk(directory)]
должен предоставить вам все подкаталоги рекурсивно.
Обратите внимание, что вторая запись в кортеже - это список дочерних каталогов записи в первой положение, так что вы можете использовать это вместо этого, но это вряд ли вас сильно спасет.
Однако вы можете использовать его только для непосредственного предоставления дочерних каталогов:
next(os.walk('.'))[1]
Или посмотрите другие решения, уже опубликованные, используя ] os.listdir
и os.path.isdir
, включая те, что находятся в « Как получить все непосредственные подкаталоги в Python ».
Функция для возврата Списка всех подкаталогов в данном пути к файлу. Перероет все дерево файла.
import os
def get_sub_directory_paths(start_directory, sub_directories):
"""
This method iterates through all subdirectory paths of a given
directory to collect all directory paths.
:param start_directory: The starting directory path.
:param sub_directories: A List that all subdirectory paths will be
stored to.
:return: A List of all sub-directory paths.
"""
for item in os.listdir(start_directory):
full_path = os.path.join(start_directory, item)
if os.path.isdir(full_path):
sub_directories.append(full_path)
# Recursive call to search through all subdirectories.
get_sub_directory_paths(full_path, sub_directories)
return sub_directories
Это - то, как я делаю это.
import os
for x in os.listdir(os.getcwd()):
if os.path.isdir(x):
print(x)
import os
d = '.'
[os.path.join(d, o) for o in os.listdir(d)
if os.path.isdir(os.path.join(d,o))]
Если вам нужно рекурсивное решение, которое найдет все подкаталоги в подкаталогах, используйте обход, как предлагалось ранее.
Если вам нужны только дочерние каталоги текущего каталога, объедините os .listdir
с os.path.isdir