我只是想重新排列数组以进行正确的循环。 我很荣幸能帮助我解决这个问题。
My input array is:-
array(
'text'=>array('icon_title_1'=>'Test 1','icon_title_2'=>'Test 2'),
'image'=>array('icon_file_1',='test.jpg','icon_file_2'=>'test2.jpg')
)
My Required output array is:-
array(
0=>array(
'text'=>'Test 1'
'image'=>'test.jpg'
),
1=>array(
'text'=>'Test 2'
'image'=>'test2.jpg'
)
);
答案 0 :(得分:1)
假设这是您输入的最终格式。您可以使用@Component
public class MyTaskListener implements TaskListener {
public static UserService getUserServiceObject() {
return SpringApplicationContextHolder.getApplicationContext().getBean(UserService.class);
}
@Override
public void notify(DelegateTask delegateTask) {
//UserService Object, It is not null now
getUserServiceObject();
}
}
@Component
public class SpringApplicationContextHolder implements ApplicationContextAware {
private static ApplicationContext applicationContext = null;
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
解决方案
array_map
输出
$data = array(
'text'=>array('icon_title_1' =>'Test 1','icon_title_2'=>'Test 2'),
'image'=>array('icon_file_1' => 'test.jpg','icon_file_2'=>'test2.jpg')
);
$func = function($text, $image){
return [
'text' => $text,
'image' => $image
];
};
var_dump(array_map($func, $data['text'], $data['image']));
答案 1 :(得分:1)
对于给定的输入格式,您可以使用以下代码获取结果,假设使用内部数组键格式,例如icon_title_1,icon_title_2,icon_title_3等。以及icon_file_1,icon_file_2等。
$input = array(
'text'=>array(
'icon_title_1'=>'Test 1',
'icon_title_2'=>'Test 2'),
'image'=>array(
'icon_file_1'=>'test.jpg',
'icon_file_2'=>'test2.jpg')
);
$output = array();
$index = 0;
foreach($input as $key => $value){
foreach($value as $k => $v){
$indexPart = explode("_",$k);
$index = $indexPart[count($indexPart)-1];
$output[$index][$key] = $v;
}
}
print_r($output);
答案 2 :(得分:1)
您可以使用简单的嵌套foreach
循环来变换数组:
$result = array();
foreach ($array as $key => $arr) {
$i = 0;
foreach ($arr as $v) {
$result[$i++][$key] = $v;
}
}
print_r($result);
输出:
Array
(
[0] => Array
(
[text] => Test 1
[image] => test.jpg
)
[1] => Array
(
[text] => Test 2
[image] => test2.jpg
)
)
答案 3 :(得分:0)
使用还可以使用 foreach 循环:
$newarray = array();
foreach ($array as $k => $arr) {
$i = 0;
foreach ($arr as $ar) {
$newarray[$i++][$k] = $ar;
}
}
print_r($newarray);