public static PhpArray array_combine(PhpArray keys, PhpArray values)
{
if (keys == null)
{
//PhpException.ArgumentNull("keys");
//return null;
throw new ArgumentNullException(nameof(keys));
}
if (values == null)
{
//PhpException.ArgumentNull("values");
//return null;
throw new ArgumentNullException(nameof(values));
}
if (keys.Count != values.Count)
{
//PhpException.Throw(PhpError.Warning, CoreResources.GetString("lengths_are_different", "keys", "values"));
//return null;
throw new ArgumentException();
}
IntStringKey key;
PhpArray result = new PhpArray();
var k_iterator = keys.GetFastEnumerator();
var v_iterator = values.GetFastEnumerator();
while (k_iterator.MoveNext())
{
v_iterator.MoveNext();
// invalid keys are skipped, values are not dereferenced:
if (Core.Convert.TryToIntStringKey(k_iterator.CurrentValue, out key))
{
result[key] = v_iterator.CurrentValue;
}
}
// result is inplace deeply copied on return to PHP code:
//result.InplaceCopyOnReturn = true;
return result;
}