whiloop에서 획득 한 그룹 정보에 대한 정보
-
08-07-2019 - |
문제
다음과 같은 문제가 있습니다. 1/2/3/4/5/6 숫자가 있고 1/3/5와 2/4/6 그룹으로 분리하고 싶습니다. 선택은 위치에 따라 이루어져야합니다. 이 부분은 괜찮습니다. Implode 함수를 사용할 때 다시 그룹화하고 싶을 때 문제가 발생합니다. 저장된 마지막 숫자 만 볼 수 있습니다. 나는 그것이이 표기법을 사용하여 나와 관련이 있다는 것을 알고 있습니다 (분류 할 숫자의 양은 매번 다양하기 때문에이 방법을 선택했습니다).
$q++;
$row0 = $row0 + 2;
$row1 = $row1 + 2;
그러나 나는 그것을 고치는 방법이나 동일한 결과를 얻는 다른 방법을 알아낼 수 없습니다. 바라건대 여기 누군가가 나를 올바른 방향으로 가리킬 수 있기를 바랍니다. 아래에 전체 코드를 남겼습니다.
<?
$string = "1/2/3/4/5/6";
$splitted = explode("/",$string);
$cnt = count($splitted);
$q=0;
$row0=0;
$row1=1;
while($cnt > 2*$q)
{
$p_row = implode(array($splitted[$row0]));
echo "$p_row <br>";
$i_row = implode(array($splitted[$row1]));
echo "$i_row <br>";
$q++;
$row0 = $row0 + 2;
$row1 = $row1 + 2;
}
$out = "implode(',', $i_row)";
var_dump($out);
?>
해결책
배열을 사용 사용 그룹으로 분할 할 수 있습니다 %
루프 색인. 각 그룹을 별도의 배열에 넣습니다. 예는 다음과 같습니다.
<?php
$string = "1/2/3/4/5/6";
$splitted = explode("/",$string);
$group_odd = array(); ## all odd elements of $splitted come here
$group_even = array(); ## all even elements of $splitted come here
for ($index = 0; $index < count($splitted); ++$index) {
## if number is divided by 2 with rest then it's odd
## but we've started calculation from 0, so we need to add 1
if (($index+1) % 2) {
$group_odd[] = $splitted[$index];
}
else {
$group_even[] = $splitted[$index];
}
}
echo implode('/', $group_odd), "<br />"; ## outputs "1/3/5<br />"
echo implode('/', $group_even), "<br />"; ## outputs "2/4/6<br />"
print_r($group_odd);
print_r($group_even);
?>
다른 팁
나는 그것이 문제를 놓친 것 같다. 대신 나는이 최적화를 제공합니다.
$string = "1/2/3/4/5/6";
$splitted = explode("/", $string);
$group = array();
for ($index = 0, $t = count($splitted); $index < $t; ++$index) {
$group[$index & 1][] = $splitted[$index];
}
$oddIndex = $group[0]; //start with index 1
$evenIndex = $group[1]; //start with index 2
echo "odd index: "
. implode('/', $oddIndex)
. "\neven index: "
. implode('/', $evenIndex)
. "\n";
그들의 위치에 따라? 그렇다면 배열에서 인덱스의 균일 함/이상함을 기반으로 분할합니까?
이 같은?
<?php
$string = "1/2/3/4/5/6";
list( $evenKeys, $oddKeys ) = array_split_custom( explode( '/', $string ) );
echo '<pre>';
print_r( $evenKeys );
print_r( $oddKeys );
function array_split_custom( array $input )
{
$evens = array();
$odds = array();
foreach ( $input as $index => $value )
{
if ( $index & 1 )
{
$odds[] = $value;
} else {
$evens[] = $value;
}
}
return array( $evens, $odds );
}
제휴하지 않습니다 StackOverflow