如何使用PHP

时间:2019-11-12 22:12:16

标签: php mysql for-loop multidimensional-array procedural

我是php的超级新手,我正在Unity c#中开发游戏,我正尝试从mysql服务器发送和接收数据。我认为我在语法上有问题。我基本上有一个从我的c#脚本发送的字符串,其中包含多个带有其统计信息的飞船。船用zzz分隔,zzz是一串统计数据,以空格分隔。我希望能够在ships数组中设置stats数组。这是我所拥有的,但不起作用。谢谢!

$shiparraytobesplit = $_POST["shipinventory"];
$ships =  explode("zzz", $shiparraytobesplit);

for($i = 0; $i<count($ships)-1; $i++)
{

    $tempship[$i] = $ships[$i];
    $tempshipinfo = explode(" ", $tempship);

    for($ii = 0; $ii<count($tempshipinfo[!i])-1; $ii++)
    {
        //$shipinfo[$tempship][] = $info . '_' . $tempshipinfo;
        $shipinfo[$ii] = $tempshipinfo[$ii];    
    }

echo $shipinfo[1];
}

我尝试了一些变体,但似乎无法使其与本示例配合使用。我可能缺少一些简单的东西,因为我对php完全陌生,对编程来说还是一种新知识。再次感谢

1 个答案:

答案 0 :(得分:0)

您有一些不需要的下标。

如果数组中有一个额外的元素,则取消设置可能会更容易,然后可以遍历整个数组。 array_map()是从现有数组生成新数组的简便方法。

$shiparraytobesplit = $_POST["shipinventory"];
$ships =  explode("zzz", $shiparraytobesplit);
unset($ships[count($ships)-1]);

$shipinfo = array_map(function($ship) {
    $tempshipinfo = explode(" ", $ship);
    unset($tempshipinfo[count($tempshipinfo)-1]);
    return $tempshipinfo;
}, $ships);

print_r($shipinfo);

如果要使用关联数组,可以在函数中进行。

$shiparraytobesplit = $_POST["shipinventory"];
$ships =  explode("zzz", $shiparraytobesplit);
unset($ships[count($ships)-1]);

$shipinfo = array_map(function($ship) {
    $tempshipinfo = explode(" ", $ship);
    $ship_assoc = [
        "id" => $tempshipinfo[0],
        "name" => $tempshipinfo[1],
        "username" => $tempshipinfo[2],
        "hp" => $tempshipinfo[3]
        ];
    return $ship_assoc;
}, $ships);
print_r($shipinfo);