0

我正在尝试删除从 ftp_nlist 输出的数组的两个字符串的两个部分。我正在与 CI 合作。另请注意,正在处理视图中的多选列表,并且代码不正确。但是我认为我应该披露显示完整视图文件的其他选择列表。

    { ["parent_directory_one/child_directory_one"]=> int(0) ["parent_directory_one/child_directory_two"]=> int(1) }

如何将以上内容更改为以下内容:

    { ["child_directory_one"]=> int(0) ["child_directory_two"]=> int(1) }

那么如何更改如下:

    { ["parent_directory_one/child_directory_one/child_files_one"]=> int(0) ["parent_directory_two/child_directory_two/child_files_two"]=> int(1) }

对此:

      { ["child_files_one"]=> int(0) ["child_files_two"]=> int(1) }
   //controller//

好的,这是我尝试过的一些示例,并且视图文件正在构建中:

    //read default remote
    $glue = '/'; $strs = ''; $root_piece_rm = ltrim($strs, './'); 

    $list_rm = ftp_nlist($conn_id,$root_piece_rm);

    $list_rm = array_flip($list_rm);

    $data['list_rm'] = $list_rm;
    //end read default remote


    if($rm_targets):

    $glue = '/'; $list_sub_rm = ftp_nlist($conn_id,$rm_targets);

    foreach($list_sub_rm as $keys):

        $list_sub_rm  = ltrim($keys,$rm_targets.$glue);

    $data['list_sub_rm'] = var_dump(array($list_sub_rm));

    endforeach;

    endif;

但是,子目录的以下代码是问题所在,我认为 ltrim 不起作用。但是,var_dump 输出的字符串是根据模式修剪的字符串,即 $rm_targets.$glue 需要删除,只显示子目录。

    //CONTROLLER//
    $rm_targets = $this->input->post('pt_rm_dirs',TRUE);

if($rm_targets):

$glue = '/'; $list_sub_rm = ftp_nlist($conn_id,$rm_targets);

$list_sub_rm = array_flip($list_sub_rm);

$list_sub_rm = array_keys($list_sub_rm);

foreach($list_sub_rm  as $index):

$eraser = ltrim($index,$rm_targets.$glue);

endforeach;

$data['list_sub_rm'] = $list_sub_rm;

endif;

同样,基本上我需要从数组的以下字符串中删除父目录 { ["jm_gallery/new_test_origs"]=> int(0) ["jm_gallery/test_thumbs"]=> int(1) }

我不确定目前需要如何设置视图或控制器。

我从下面的 var_dump 获得的输出是我需要在多选列表中显示的内容。它本质上是子目录,但删除了正斜杠和父目录。在我开始使用 ftp_nlist 之前,我没有遇到过这种情况,这非常令人不安。

    //CONTROLLER//
if($rm_targets):

$glue = '/'; $list_sub_rm = ftp_nlist($conn_id,$rm_targets);

foreach($list_sub_rm as $keys):

    $list_sub_rm  = ltrim($keys,$rm_targets.$glue);

$data['list_sub_rm'] = var_dump(array($list_sub_rm));

endforeach;

endif;

这是我想再次注意的正在建设中的视图文件,因此循环还不正确:

    //VIEW//
    <?php if(!defined('BASEPATH'))exit('No direct script access allowed'); ?>

    <?php echo form_open('test_sftp/test_function')?>

    <select name="pt_rm_dirs" multiple size="10">
    <option value="select one"<?php echo set_select('pt_rm_dirs', 'select_one');?>   >select&nbsp;one</option>
    <?php foreach($list_rm as $folder_rm_dirs => $contents_rm_dirs):?>
    <option value="<?php echo $folder_rm_dirs?>"<?php echo set_select('pt_rm_dirs', '$folder_rm_dirs');?> ><?php echo $folder_rm_dirs?></option>
    <?php endforeach;?>
    <?php unset($contents_rm_dirs);?>

第2步:

为选定的远程目录指定新名称:

    <select name="ct_rm_subdirs" multiple size="10">
    <option value="select one"<?php echo set_select('ct_rm_subdirs', 'select_one');?> >select&nbsp;one</option>
    <?php foreach($list_sub_rm as $sub_folder_rm):?>
    <option value="<?php echo $sub_folder_rm?>"<?php echo set_select('ct_rm_subdirs', '$sub_folder_rm');?> ><?php echo $sub_folder_rm?></option>
    <?php endforeach;?>
    <?php unset($sub_contents_rm);?>
    </select>

    <select name="rm_sub_dirs_files" multiple size="15">
    <option value="select one"<?php echo set_select('rm_sub_dirs_files', 'select_one');?> >select&nbsp;one</option>
    <?php foreach($list_sub_rm as $sub_folder_rm => $sub_contents_rm):?>
    <optgroup label="<?php echo $sub_folder_rm?>">
    <?php foreach($sub_contents_rm as $files):?>
    <option value="<?php echo $files?>"<?php echo set_select('rm_sub_dirs_files', '$files');?> ><?php echo $files?></option>
    <?php endforeach;?>
    <?php endforeach;?>
    <?php unset($sub_contents_rm);?>
    <?php unset($files);?>
    </optgroup>
    </select> 
    <?php echo form_submit('submit', 'Submit');?>
    <?php echo form_close()?>

    </body>
    </html>
    <?php echo form_close();?>

更新:当我 var_dump 时,字符串下面的代码会根据需要进行更改,但为什么我不能通过视图回显它们?我尝试将字符串转换为有问题的数组。

if($rm_targets):

$glue = '/'; 

$list_sub_rm = ftp_nlist($conn_id,$rm_targets);

foreach($list_sub_rm as $keys):

$list_sub_rm = ltrim($keys,$rm_targets.$glue);

$data['list_sub_rm'] = var_dump($list_sub_rm);

    endforeach;

endif; 

非常感谢任何帮助!!!谢谢!!!

4

1 回答 1

0

看起来文件名是你数组中的键,这让我很震惊。

foreach ( $list_sub_rm as $key => $value ) {
    $key = preg_replace("#.*/([^/]*)$#", "$1", $key);
    $newArray[$key] = $value;
}
于 2012-06-29T05:47:26.150 回答