ホームページ >バックエンド開発 >PHPチュートリアル >PHPコードのip2longループの問題
print_r($dataIp); foreach ($dataIp as $key=>$value) { $data['ip'] = $value; $data['iplong'] = bindec(decbin(ip2long($value))); print_r($data); }
Array
(
[0] => 208.104.70.215
[1] => 74.101.176.171
[2] => 73.17. 0
[3] = > ; 70.198.197.3
[4] => 46.44.179.76
)
====
配列
(
[ip] => 208.104.70.215
[iplong] => 0
)
配列
(
[ip] => 74.101.176.171
[iplong] => 0
)
配列
(
[ip] => 73.17.35.30
[iplong] => 0
)
配列
(
[IP ] => 70.198.197.3
[iplong] => 0
)
配列
(
[ip] => 46.44.179.76
[iplong] => 774681420
)
ip2long は配列を変換できませんか?
問題ありません
Array( [ip] => 208.104.70.215 [iplong] => 3496494807)Array( [ip] => 74.101.176.171 [iplong] => 1248178347)Array( [ip] => 73.17.35.30 [iplong] => 1225859870)Array( [ip] => 70.198.197.3 [iplong] => 1187431683)Array( [ip] => 46.44.179.76 [iplong] => 774681420)
モデレーターがコードを変更したのでしょうか? ローカルで何度も試しましたが、最後のコードしか読み取れません。理由がわかりません。
<?php$dataIp = array('208.104.70.215', '74.101.176.171', '73.17.35.30', '70.198.197.3', '46.44.179.76');foreach ($dataIp as $key=>$value) { $data['ip'] = $value; $data['iplong'] = bindec(decbin(ip2long($value))); print_r($data); }
Array( [ip] => 208.104.70.215 [iplong] => 3496494807)Array( [ip] => 74.101.176.171 [iplong] => 1248178347)Array( [ip] => 73.17.35.30 [iplong] => 1225859870)Array( [ip] => 70.198.197.3 [iplong] => 1187431683)Array( [ip] => 46.44.179.76 [iplong] => 774681420)
print_r($data); をループの外に置くと、最後の 1 つだけになります
???、正常です。
私の完全なコードは次のとおりです
$dataIp= explode("\n", $_POST['ip']); if(empty($dataIp)){ $this->error('未填写IP!');}//$dataIp = array('208.104.70.215', '74.101.176.171', '73.17.35.30', '70.198.197.3', '46.44.179.76');print_r($dataIp);foreach ($dataIp as $key=>$value) { $data['ip'] = $value; $data['iplong'] = bindec(decbin(ip2long($value))); print_r($data); }
問題を発見してくれた上記の人々に感謝します。値が取得されない原因はフォームの前後のスペースでした。