$string='eDreams 459 Travel Up 464 AirAfrica 464 Available at 459 Available at 464 Available at 464 Available at 473 Available at 478 Available at 479 Available at 498';
how to get data like:
array =
0 => string 'eDreams' (length=6)
1 => string '459'
array=
0 => string 'Travel Up' (length=6)
1 => string '464'
array =
0 => string 'AirAfrica' (length=6)
1 => string '464'
怎么做这个我试过这个爆炸它工作正常但不准确帮助我好吗?
答案 0 :(得分:1)
我找到了一种方式......它并不漂亮。我希望它可以帮助你。
<?php
$string = "eDreams 459 Travel Up 464 AirAfrica 464 Available at 459 Available at 464 Available at 464 Available at 473 Available at 478 Available at 479 Available at 498";
$array = explode(" ", $string);
$final_array = array();
$found = false;
foreach ($array as $value) {
if (ctype_digit($value)){
$final_array[count($final_array)-1][] = (int)$value;
$found = false;
} else {
if ($found == false){
$final_array[] = array($value);
$found = true;
} else {
$final_array[count($final_array)-1][0] .= " " . $value;
}
}
}
print_r($final_array);
?>
我不会使用这样的东西。也许你可以直接从db获得更好的结果。
答案 1 :(得分:1)
我已经提出了这个解决方案......
$string = 'eDreams 459 Travel Up 464 AirAfrica 464 Available at 459 Available at 464 Available at 464 Available at 473 Available at 478 Available at 479 Available at 498';
$arr = [ ];
$name = '';
$number = '';
$count = strlen( $string );
$reset = 0;
for ( $i = 0; $i < $count; $i++ )
{
if ( is_numeric( $string[ $i ] ) )
{
$reset = 1;
$number.= $string[ $i ];
}
else
{
if ( $reset == 1 )
{
$arr[] = [ trim( $name ), trim( $number ) ];
$name = '';
$number = '';
$reset = 0;
}
else
{
$name.= $string[ $i ];
}
}
}
print_r( $arr );
答案 2 :(得分:0)
您希望隔离到单独数组中的元素由多个空格或制表符移位分隔,并且数组元素本身由单个空格分隔。如果字符串实际上是以这种方式格式化的,则可以使用split()
函数将这些元素拉入数组或多个数组中。例如:
$split_pattern = " ";
$array = split($split_pattern, $string);
这将导致数组看起来像:
array =
0 => string 'eDreams 459'
1 => string 'Travel Up 464'
...
4 => string 'Available at'
5 => string '459'
etc...
您需要再次split()
这些数组元素,以创建格式为0 => name, 1 => number
的数组。
要处理available at
条目,您可以使用array_keys()
函数:
$pattern = "Available at";
$availables = array_keys($array, $pattern);
foreach ($availables as $available){
$availableAt = $array[$available];
$availableNum = $array[$available + 1];
}
因此,$availableAt
始终为"Available at"
,但$availableNum
将包含数字,该数字只是您最初split()
数组中的下一个元素。有几种方法可以实现这一目标,但我认为这将是最明确的。
参考文献:
答案 3 :(得分:0)
试试这个:
private Dictionary<string, Dictionary<string, Packet>> PacketsStore = new Dictionary<string, Dictionary<string, Packet>>();