我正在尝试删除从 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 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 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 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;
非常感谢任何帮助!!!谢谢!!!