2014-06-13 3 views
0

$ dbs라는 객체가 있는데 여기에 여러 항목이 포함 된 여러 배열이 있습니다. 각 항목의 기간 후에 문자를 제거하려고합니다.php - 여러 배열에있는 여러 항목의 마침표 뒤에 문자 제거

PHP

print "<pre>"; 
print_r($dbs); 
print "</pre>"; 

출력

Array 
(
    [1] => FMServer_Sample.fmp12 
) 
Array 
(
    [1] => GolfAudit4.fmp12 
    [2] => iCDS.fmp12 
    [3] => rawhide.fmp12 
) 
Array 
(
    [1] => Assets.fmp12 
    [2] => PassTracker.fmp12 
    [3] => Scanner.fmp12 
) 
Array 
(
    [1] => prima.fmp12 
) 
Array 
(
    [1] => CNAC_db.fmp12 
) 

내가 좋아하는 일을 할 때 ...

$db = array(); 
foreach ($dbs as $db) { 
    $db = substr($db, 0, (strlen($db)) - (strlen(strrchr($db, '.')))); 
    print "<pre>"; 
    print_r($db); 
    print "</pre>"; 
} 
나는 기간 후 문자를 제거 할 수있어

하지만 내가 할 수있는 foreach 루프에서 각 배열의 항목 만 반환합니다. 루프 외부에서 print_r() $ db를 사용하면 각 배열에서 첫 번째 항목 만 반환 할 수 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 각 배열의 각 항목을 루프 외부에서 사용할 수있는 새로운 배열에 넣을 수 있습니까?

+0

참조를 사용해 보셨습니까? '&'foreach ($ dbs as & $ db)'에? – user1978142

+0

출력이 하나의 변수가 아니어야합니다. – xdazz

+0

'$ db [] = ...'? – Darren

답변

2

당신은 매번는 루프에 투어 코드를 변경하려고 배열을 덮어 쓰는 :

<?php 
$dbNew = array(); 
foreach ($dbs as $db) { 
     $dbNew[] = substr($db, 0, (strlen($db)) - (strlen(strrchr($db, '.')))); 
} 
print "<pre>"; 
print_r($dbNew); 
print "</pre>"; 
?> 
+0

각 배열의 항목을 새로운 배열로, 가능하면 문자열로 저장할 수 있습니까? –

+0

내가 원하는 것을 이해하지 못한다. 원하는 출력을 제공 할 수 있습니까? – LinkinTED

0

대신 새로운 배열을 만들 array_map()를 사용할 수 있습니다

$dbs = array_map(function($db) { 
    return strtok($db, '.'); // only use first portion 
}, $dbs); 
1

그것을 시도 :

<?php 
$dbs = array(array(1 => 'FMServer_Sample.fmp12'), array(1 => 'GolfAudit4.fmp12', 2 => 'iCDS.fmp12', 3 => 'rawhide.fmp12'), array (1 => 'Assets.fmp12', 2 => 'PassTracker.fmp12', 3 => 'Scanner.fmp12'), array(1 => 'prima.fmp12'), array(1 => 'CNAC_db.fmp12')); 

$arrNewDb = array(); 
foreach ($dbs as $db) { 
    foreach ($db as $val) { 
    $arrDb = explode(".", $val); 
    $arrNewDb[] = $arrDb[0]; 
    } 
} 

print "<pre>"; 
print_r($arrNewDb); 
print "</pre>"; 
?> 
관련 문제