1

我对这种情况有疑问,如何通过数组存储字符串?这是我的代码

<?php
$octets = array($_POST["oct1"],$_POST["oct2"],$_POST["oct3"],$_POST["oct4"]);
$octlenfnl = count($octets) - 1;
$binoctstr = 0 ;
if($_POST["oct1"] <= 255 && $_POST["oct1"] <= 255 && $_POST["oct1"] <= 255 && $_POST["oct1"] <= 255)
{
    for($i=0;$i<=$octlenfnl;$i++){
        echo str_pad(decbin($octets[$i]), 8, '0', STR_PAD_LEFT) , "&nbsp";
    }
}
else
{
    echo "Invalid IP!";
}

?>

它像这样将输入的 IP 输出到二进制八位字节11111111 0001000 10010101 10010101,它们在八位字节之间有空格,我该如何拆分它们并将其存储到全局可访问的数组中?

谢谢

4

3 回答 3

1

您可以使用$arr=explode(' ', "11111111 0001000 10010101 10010101");

于 2013-01-24T11:27:46.937 回答
1

不是回显您的结果,而是将它们存储到类似这样的数组中

<?php
$octets = array($_POST["oct1"],$_POST["oct2"],$_POST["oct3"],$_POST["oct4"]);
$octlenfnl = count($octets) - 1;
$binoctstr = 0 ;
$binaryarray = array();
if($_POST["oct1"] <= 255 && $_POST["oct1"] <= 255 && $_POST["oct1"] <= 255 && $_POST["oct1"] <= 255)
{
  for($i=0;$i<=$octlenfnl;$i++){
      $binaryarray[] = str_pad(decbin($octets[$i]), 8, '0', STR_PAD_LEFT);
  }
}
    else
    {
        echo "Invalid IP!";
    }

//to echo out your results you can do this as a comma separated string
echo implode(",",$binaryarray);
//or if you wish to access a specific segment you can do this where $key is the array element you want
echo $binaryarray[$key];  

?>

简化代码的更新编辑

您可以稍微简化代码,我认为这样可以节省您创建第二个数组并仅操作现有数组的时间。除非您需要该初始数组来做任何事情,否则这应该可以正常工作

<?php
$octets = array($_POST["oct1"],$_POST["oct2"],$_POST["oct3"],$_POST["oct4"]);
$binoctstr = 0 ;
if($_POST["oct1"] <= 255 && $_POST["oct1"] <= 255 && $_POST["oct1"] <= 255 && $_POST["oct1"] <= 255)
{
  for($i=0;$i<=count($octets);$i++){
      $octets [$i] = str_pad(decbin($octets[$i]), 8, '0', STR_PAD_LEFT);
  }
}
    else
    {
        echo "Invalid IP!";
    }

//to echo out your results you can do this as a comma separated string
echo implode(",",$octets );
//or if you wish to access a specific segment you can do this where $key is the array element you want
echo $octets[$key];  

?>
于 2013-01-24T11:31:26.077 回答
0

用这个

$resultAsArray = explode(" ", $binaryOctets);
于 2013-01-24T11:29:02.880 回答