我一直在寻找PHP代码问题的答案。虽然对某些用户来说听起来很容易,但我遇到了以下问题:
我设法使用PHP和MySql从特定表中检索数据。不幸的是,我无法将结果显示为字符串而不是数组。
我使用了print_r($loggedin_users).
结果:
Array ( [0] => Array ( [0] => Test ) [1] => Array ( [0] => Test1 ) )
我尝试过使用implode函数给我一个字符串。
结果:
ArrayArray
我可以知道如何获得如下结果吗?
期望的结果:
Test; Test1
提前谢谢。
答案 0 :(得分:5)
问题是,你有一个二维数组。所以你试图破坏两个阵列,这是无法工作的。所以你首先必须破坏subArrays,然后再次破坏它,例如
echo implode(";", array_map("implode", $loggedin_users));
旁注:
如果你打开error reporting
,你会收到通知,说:
注意:数组到字符串转换
答案 1 :(得分:2)
您可以使用unutbu:
`public class Test extends JDialog{
public static void main(String... args) throws Exception{
SwingUtilities.invokeAndWait(()->{new Test();});
}
private JToggleButton pinToScreenButton;
private JButton cloneFrameButton;
public Test(){
this.setSize(200,200);
this.setLayout(new FlowLayout());
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
pinToScreenButton = new JToggleButton("pin to screen");
pinToScreenButton.addItemListener(e->{
pinToScreenButtonAction(e);
});
add(pinToScreenButton);
cloneFrameButton = new JButton("clone");
cloneFrameButton.addActionListener(e->{
cloneFrameButtonAction(this);}
);
add(cloneFrameButton);
setVisible(true);
}
public void pinToScreenButtonAction(ItemEvent evt){
if(evt.getStateChange() == ItemEvent.SELECTED){
this.setAlwaysOnTop(true);
}else{
this.setAlwaysOnTop(false);
}
}
public void cloneFrameButtonAction(JDialog invoker){
JDialog newDialog = new Test();
newDialog.setLocation(invoker.getX()+10, invoker.getY()+15);
}
}
答案 2 :(得分:0)
使用foreach
他们使用implode
因为你有多维数组。
foreach($loggedin_users as $key => $val){
$string = implode(', ', $val);
}
答案 3 :(得分:0)
你必须在这里创建一个递归函数。所以,无论它是什么数组,无论嵌套的程度如何。你将永远得到理想的结果。
$a = array(
0 => array(0 => 'Test'),
1 => array(0 => 'Test1')
);
function implodeCustom($array){
$string = "";
foreach($array as $key => $value)
if(is_array($value)){
$string .= implodeCustom($value);
} else{
$string .= $value.";";
}
return $string;
}
echo rtrim(implodeCustom($a),';');