배열 0값 제거하기

배열 0값 제거하기

QA

배열 0값 제거하기

본문

133|5554|0.0|33

이런식으로 저장되어 있습니다.

array_filter 한다는거 까지는 알았습니다.  검색해서,ㅋ

 

문제는 나의 저장값이 0이 아니고

0.0입니다.

그래서 제거가 앙됩니다. ㅜㅜ

 

원하는거는 0.0값은 제거한 배열의 갯수를 알아내려고 하는중인데...

벽에 부딪쳤습니다. 그래서 머리가 띵한 상태구요,,,

지금 상태가 많이 않좋기 때문에 더 뭘 해볼수가 없습니다..ㅠㅠ

 

혹시 어떻게 방법이 없을까요?

 

<?
$arr = explode("|", $list[$i]['total_price']);
$arr2 = array_filter( $arr );
print_r( $arr2 );
?>

이 질문에 댓글 쓰기 :

답변 2


<?php
$arr = '133|5554|0.0|33';
$arr = explode("|", $arr);
$arr2 = array_diff($arr, array('0.0'));
var_export( $arr2 );
?>

근데 조금 이상해서 여쭤볼게요,,,
원래
98|98|0.0|188|0.0|88|0.0|149|0.0|88|0.0
이렇게 있었는데 이상태에서 카운트한 배열갯수 6개가 출력되는데
0.0을 제거한 뒤에 출력하지 않고 앞에서부터 6개를 출력해버리는거 같습니다.
아래처럼요
98|98|0.0|188|0.0|88

엑셀로 다운로드하려는거라 var_export( $arr2 );는 애러나서
이렇게 했거든요,
$arr = explode("|", $row['total_price']);
$arr2 = array_diff($arr, array('0.0'));
//var_export( $arr2 );

for($k = 0; $k < count($arr2); $k++) {

감사합니다.
$total_price 배열갯수에 따라
어떤글은 3행, 5행, 2행 이런식으로 다운로드 되어야 하는데
wr_id마다 한줄씩만 다운되니 배열은 반영이 안되어서 중간 for문은 고수님이 가르쳐준겁니다.
잘되구요,,,

현재 이렇게 되어 있습니다.

for ($i=2; $row= sql_fetch_array($result); $i++)  { 


$wr_20 = explode("|", $row['wr_20']); //주소

$p_color = explode("|", $row['p_color']);
$p_size = explode("|", $row['p_size']);
$p_qty = explode("|", $row['p_qty']);
$total_price = explode("|", $row['total_price']);
$p_img_url = explode("|", $row['p_img_url']); //
$p_url = explode("|", $row['p_url']); //
$tracking = explode("|", $row['tracking']);
    // Add some data


$arr = explode("|", $row['total_price']);


//$arr = array_diff($arr, array("0.0"));
//$arr2 = array_diff($arr, array('0.0'));
//var_export($arr2);
$arr2 = array_values(array_diff($arr, array('0.0')));

for($k = 0; $k < count($arr2); $k++) {
    if($k>0) $i++;
$j=1;
$objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue("A$i", "$j")
                ->setCellValue("B$i", ".")
                ->setCellValue("C$i", "$row[wr_14]")
                ->setCellValue("D$i", "$row[wr_16]")
                ->setCellValue("E$i", "$row[wr_15]")
                ->setCellValue("F$i", "$wr_20[0]")
                ->setCellValue("G$i", "$wr_20[1] | $wr_20[2] | $wr_20[3]")

                ->setCellValue("Q$i", "$p_color[$k]")
                ->setCellValue("R$i", "$p_size[$k]")
                ->setCellValue("S$i", "$p_qty[$k]")
                ->setCellValue("T$i", "$total_price[$k]")
                ->setCellValue("U$i", "$p_img_url[$k]")
                ->setCellValue("V$i", "$p_url[$k]")
                ->setCellValue("W$i", "$tracking[$k]");

  }

}

번거롭게 해드려서 죄송합니다.

1.데이터를 엑셀로 받는데....
게시판 글별로 한 행씩 다운로드되어 문제는 total_price는 배열로 저장된거라
total_price 배열이 3개면 3행이 출력되고
그다음의 글의 total_price배열이 1개면 1행 출력되고 이렇게 하였습니다. 그게 위의 코드이구요,
for문 참조

2.아래처럼 잘 되는데

브랜드 색상 사이즈 수량 합계
브랜드 98
브랜드 98
브랜드 0.0
브랜드 188
브랜드 0.0
브랜드 88
브랜드 0.0
브랜드 149
브랜드 0.0
브랜드 88
브랜드 0.0

위의 0.0행이 있는 것은 제거하고

브랜드 색상 사이즈 수량 합계
브랜드 98
브랜드 98
브랜드 188
브랜드 88
브랜드 149
브랜드 88
이렇게 출력되게 하려는 것입니다.

알려주신방법으로 하면
브랜드 색상 사이즈 수량 합계
브랜드 98
브랜드 98
브랜드 0
브랜드 188
브랜드 0
브랜드 88
이렇게 출력되어서요

알기 쉽게 설명드렸는지 모르겠군요,,,

array_filter()을 이렇게 하는 게 아닐 텐데요.

 

https://www.php.net/manual/en/function.array-filter.php

 

 

<?

function smaller_some($var) {
    return $var < 0.00001;
}
$arr = explode("|", $list[$i]['total_price']);
$arr2 = array_filter( $arr, 'smaller_some' );
print_r( $arr2 );
?>

답변을 작성하시기 전에 로그인 해주세요.
전체 123,628 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT