1

ログインが成功した場合に一連のデータを返す外部データベースから人とその機能を識別する Web サービスがあります。データ (今私が興味を持っている) は、次のように異なる文字列で区切られています。

$groups="group1, group2, group3"
$functions="member, member, admin"

文字列の最初の要素は、文字列の$groups最初の要素に対応し$functionsます。

文字列に空のスポットを含めることができます。

$groups="group1,, group3";
$functions="member,, admin";

それらを組み合わせて取得する最良の方法は何ですか:

$usertype(
    group1=>member, 
    group2=>member, 
    group3=>admin,
);

array_search()次に、関数に対応するグループの名前を取得するために使用する予定です。

4

7 に答える 7

1

explode()文字列の配列を作成し、一方の配列をキーとして使用array_combine()し、もう一方を値として使用するために使用します。

$groups = "group1, group2, group3";
$functions = "member, member, admin";

$usertype = array_combine(explode(", ", $groups), explode(", ", $functions));
于 2013-06-11T12:19:07.533 に答える
1
$groups = explode(",", $groups);
$functions = explode(",", $functions);

//then use the elements of the $groups array as key and the elements of the $functions array as the value
$merged = array_combine($groups, $functions);
于 2013-06-11T12:17:24.873 に答える
1

これに沿った何かが役立つはずです:

$usertype = array_combine(explode(',', $groups), explode(',', $functions));
于 2013-06-11T12:17:54.050 に答える
0

爆発とarray_combine。空白に問題があることに注意してください。したがって、次を使用します。

<?php
$groups="group1, group2, group3";
$functions="member, member, admin";

$groupArray = array_map(function($element){return trim($element);},      
explode(',',$groups)); // split into array and remove leading and ending whitespaces
$functionArray = array_map(function($element){return trim($element);},   
explode(',',$functions));  // split into array and remove leading and ending whitespaces

print_r(array_combine($groupArray,$functionArray));
?>

これは出力されます:

Array
(
    [group1] => member
    [group2] => member
    [group3] => admin
)

EDIT:最初の要素が空である可能性のためにトリムを削除しました。

于 2013-06-11T12:20:08.777 に答える
0
$groups="group1, group2, group3"
$functions="member, member, admin"

preg_match_all('/\w+/', $groups, $groups);
preg_match_all('/\d+/', $functions, $functions);

$final = array();
foreach ($groups[0] AS $key => $letter)
    $final[] = $letter . '=>' . $functions[0][$key];

echo join(', ', $final);
于 2013-06-11T12:20:11.703 に答える
0

を試してから、配列をフィルタリングしましたか? それはそれを行う良い方法だと思います:explode($delimiter , $string)

$groups="group1,, group3";
$functions="member,, admin";

$groups_array = array_map('trim',explode(',', $groups));
$functions_array = array_map('trim',explode(',', $functions));

$final = array();
for ($i = 0; $i <= count($groups_array); $i++) {
    $final[$groups_array[$i]] = $functions_array[$i];
}

$merged = array_combine($groups_array, $functions_array);

デモ

于 2013-06-11T12:15:53.917 に答える